2つのSQLステートメントを使用して、私が望むことを達成できます。最初にINSERT。次に、「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を角かっこで囲みました。
編集:1つの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;"