Вы можете использовать два оператора SQL для выполнения того, что, я думаю, вы хотите. Сначала ВСТАВКА. Затем «SELECT @@ Identity», чтобы получить последнее добавленное значение автонумерации. Используйте переменную объекта для соединения с базой данных с обоими операторами SQL.
Dim db As DAO.Database
Dim NewPrimaryKey As Long
Dim strInsert As String
strInsert = "INSERT INTO MyTable ([DateValue])" & vbCrLf & _
"VALUES (Now());"
Set db = CurrentDb
db.Execute strInsert, dbFailOnError
NewPrimaryKey = db.OpenRecordset("SELECT @@Identity")(0)
Debug.Print NewPrimaryKey
Set db = Nothing
Я заключил имя поля DateValue в квадратные скобки, потому что это зарезервированное слово.
Редактировать : Если вы вставляете несколько записей одним оператором SQL, SELECT @@ Identity все равно выдаст вам последний номер автономера. Это последний автономный номер для вставок, выполненных через этот экземпляр соединения. И вы не получите последовательность использованных автономных номеров; только последний.
strInsert = "INSERT INTO MyTable3 ([some_text])" & vbCrLf & _
"SELECT TOP 3 foo_text FROM tblFoo" & vbCrLf & _
"WHERE foo_text Is Not Null ORDER BY foo_text;"