Så vidt jeg ved @@IDENTITY
virker ikke for markørbaserede indsættelser. DAO og ADO bruger begge markører bag kulisserne.
Når du .Update
posten burde du kunne få identitetsværdien tilbage ved blot at læse værdien.
Følgende fungerer fint for mig via et ADO Recordset åbnet med Keyset semantik:
r.Update
Debug.Print r("ItemID")
Følgende fungerer fint for mig via et DAO Recordset åbnet med Dynaset semantik:
r.Update
r.Bookmark = r.LastModified
Debug.Print r("ItemID")
Du bør undgå .Requery
og .MoveFirst
, introducerer du samtidighedsproblemer. Overvej:
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")