在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
获取新插入记录的自动编号 在网上搜索自动编号,可以看到很多文章,而绝大多数的文章都是引用的同样的几篇文章,而这些文章的最终来源,还是来自微软的Support,如果你不想
1、Insert Into语句后,如何取自动编号的值,请看例程:
1 cnn.execute "INSERT INTO Goods (Name,Description) Values ('新商品1','新商品描述1')" 2 dim rst as adodb.recordset 3 set rst=new adodb.recordset 4 rst.open "SELECT @@Identity" 5 msgbox rst(0) 这里rst(0)即为新记录的自动编号字段的值 2、AddNew和Update执行后,如何取自动编号的值,请看例程:1 rst.addnew 2 rst.fields("Name")="新商品1" 3 rst.fields("Description")="新商品描述1" 4 rst.update 5 msgbox rst.fields("ID")
rst.fields("ID")即为新记录的自动编号字段的值,注意,ID是我在Goods表中设计的自动编号列名。 值得注意的是,插入操作和执行SELECT @@Identity的操作所使用的connection对象应该是同一个对象。 其实这就是微软给出的方法,我为什么还要在这里再啰嗦一次呢,原因是,我在测试上面的两个方法时,update可以,但Insert那个方法总是得到0。我很疑惑,仔细看了例程后,发现例程中的数据库是使用ADOX的Catalog对象创建的,其方法是: 要 知道,如果使用上面的语句创建出来的数据库其实是Access2000格式的,而我常常喜欢在VisData中操作数据库,VisData创建的数据库是 Access95格式的,而在微软Support中提到了,对SELECT @@Identity语句的支持是在Access2000后才得到提供的,这就是我测试通不过的原因。 另外对于使用VisData或者 Access95格式的数据库,使用上面提到的第2种方法获取自动编号的值有时正常,有时却返回0,这要看数据库更新的速度了,如果数据库没来得及更新, 你就查询自动编号字段的值,得到的就会是0了,所以说,对于Access95格式的数据库来说,这种方法是存在隐患的。更直接的说,我和你都应该抛弃 VisData和Access95了。 3、使用Access95格式数据库如何获取新插入记录的自动编号的值:1 rst.addnew 2 rst.fields("Name")="新商品1" 3 rst.fields("Description")="新商品描述1" 4 rst.update 5 dim bookmark '这里bookmark应该是Variant类型 6 bookmark = rst.AbsolutePosition 7 rst.Requery '这是一个重点 8 rst.AbsolutePosition = bookmark 9 msgbox rst.fields("ID")
'这里rst.fields("ID")即为新记录的自动编号字段的值。
1 If cnn.Properties("Jet OLEDB:Engine Type").Value = 5 Then 2 MsgBox "Jet 4.0 database" 3 Else 4 MsgBox "Not a Jet 4.0 database" 5 End If
如果你对Jet有着浓厚的兴趣,可以通过下面的链接来找到一些信息: |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论