最后插入行的自动编号值 - MS Access / VBA

我有一个JET以自动编号为主键的表,我想知道如何在插入一行后检索此数字。我曾想过MAX()用来检索具有最高值的行,但我不确定它有多可靠。一些示例代码:


Dim query As String

Dim newRow As Integer

query = "INSERT INTO InvoiceNumbers (date) VALUES (" & NOW() & ");"

newRow = CurrentDb.Execute(query)

现在我知道这不起作用,因为Execute()不会返回主键的值,但这基本上是我正在寻找的那种代码。我将需要使用新行的主键来更新另一个表中的多个行。


这样做最简单/最易读的方法是什么?


HUX布斯
浏览 770回答 3
3回答

杨__羊羊

在您的示例中,因为您使用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。
打开App,查看更多内容
随时随地看视频慕课网APP