O ile mi wiadomo @@IDENTITY
nie działa dla wstawek opartych na kursorze. DAO i ADO używają kursorów za kulisami.
Po .Update
rekord, w którym powinieneś być w stanie odzyskać wartość tożsamości, po prostu odczytując wartość.
Następujące działania działają dobrze dla mnie za pośrednictwem zestawu rekordów ADO otwartego z semantyką zestawu kluczy:
r.Update
Debug.Print r("ItemID")
Następujące ustawienia działają dobrze dla mnie za pośrednictwem zestawu rekordów DAO otwartego z semantyką Dynaset:
r.Update
r.Bookmark = r.LastModified
Debug.Print r("ItemID")
Należy unikać .Requery
i .MoveFirst
, wprowadzasz problemy ze współbieżnością. Rozważ:
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")