Sejauh yang saya ketahui @@IDENTITY
tidak berfungsi untuk sisipan berbasis kursor. DAO dan ADO keduanya menggunakan kursor di belakang layar.
Setelah Anda .Update
catatan Anda harus bisa mendapatkan kembali nilai identitas hanya dengan membaca nilainya.
Berikut ini berfungsi dengan baik untuk saya melalui ADO Recordset yang dibuka dengan semantik Keyset:
r.Update
Debug.Print r("ItemID")
Berikut ini berfungsi dengan baik untuk saya melalui DAO Recordset yang dibuka dengan semantik Dynaset:
r.Update
r.Bookmark = r.LastModified
Debug.Print r("ItemID")
Anda harus menghindari .Requery
dan .MoveFirst
, Anda memperkenalkan masalah konkurensi. Pertimbangkan:
Dim r as DAO.Recordset, db as DAO.Database
Set db = CurrentDb
Set r = db.OpenRecordset("SELECT TOP 1 * FROM item ORDER BY ItemID DESC", dbOpenDynaset, dbSeeChanges)
r.AddNew
''// Set field values here
r.Update
''// At this point another user adds a new record
r.Requery
r.MoveFirst ''// ORDER BY ItemID DESC means that you're going to see the new user's row
Debug.Print r("ItemID")