Pokud vím, @@IDENTITY
nefunguje pro vkládání založené na kurzoru. DAO i ADO používají kurzory za scénou.
Po .Update
záznamu, měli byste být schopni získat hodnotu identity zpět jednoduše přečtením hodnoty.
Následující pro mě funguje dobře prostřednictvím sady záznamů ADO otevřené sémantiky sady klíčů:
r.Update
Debug.Print r("ItemID")
Následující postup mi funguje dobře prostřednictvím sady záznamů DAO otevřené sémantiky Dynaset:
r.Update
r.Bookmark = r.LastModified
Debug.Print r("ItemID")
Měli byste se vyhnout .Requery
a .MoveFirst
, zavádíte problémy se souběžností. Zvažte:
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")