我有一个JET以自动编号为主键的表,我想知道如何在插入一行后检索此数字。我曾想过MAX()用来检索具有最高值的行,但我不确定它有多可靠。一些示例代码:Dim query As StringDim newRow As Integerquery = "INSERT INTO InvoiceNumbers (date) VALUES (" & NOW() & ");"newRow = CurrentDb.Execute(query)现在我知道这不起作用,因为Execute()不会返回主键的值,但这基本上是我正在寻找的那种代码。我将需要使用新行的主键来更新另一个表中的多个行。这样做最简单/最易读的方法是什么?
3 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
在您的示例中,因为您使用CurrentDB来执行INSERT,所以您自己更难。相反,这将工作:
Dim query As String
Dim newRow As Long ' note change of data type
Dim db As DAO.Database
query = "INSERT INTO InvoiceNumbers (date) VALUES (" & NOW() & ");"
Set db = CurrentDB
db.Execute(query)
newRow = db.OpenRecordset("SELECT @@IDENTITY")(0)
Set db = Nothing
我曾经通过打开AddOnly记录集并从那里获取ID 来进行INSERT ,但这里的效率要高得多。请注意,它不需要ADO。
- 3 回答
- 0 关注
- 769 浏览
添加回答
举报
0/150
提交
取消