Theo như tôi biết @@IDENTITY
không hoạt động đối với chèn dựa trên con trỏ. DAO và ADO đều sử dụng con trỏ ở hậu trường.
Sau khi bạn .Update
bản ghi mà bạn có thể lấy lại giá trị nhận dạng chỉ bằng cách đọc giá trị.
Phần sau hoạt động tốt đối với tôi thông qua Tập bản ghi ADO được mở bằng ngữ nghĩa Keyset:
r.Update
Debug.Print r("ItemID")
Những điều sau đây hoạt động tốt đối với tôi thông qua Bộ ghi âm DAO được mở bằng ngữ nghĩa Dynaset:
r.Update
r.Bookmark = r.LastModified
Debug.Print r("ItemID")
Bạn nên tránh .Requery
và .MoveFirst
, bạn đang giới thiệu các vấn đề về đồng thời. Cân nhắc:
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")