जहां तक मेरी जानकारी है @@IDENTITY
कर्सर-आधारित आवेषण के लिए काम नहीं करता है। DAO और ADO दोनों ही परदे के पीछे कर्सर का उपयोग करते हैं।
आपके बाद .Update
वह रिकॉर्ड जो आपको केवल मान पढ़कर पहचान मान वापस पाने में सक्षम होना चाहिए।
कीसेट सेमेन्टिक्स के साथ खोले गए एडीओ रिकॉर्डसेट के माध्यम से निम्नलिखित मेरे लिए ठीक काम करता है:
r.Update
Debug.Print r("ItemID")
डायनासेट सेमेन्टिक्स के साथ खोले गए डीएओ रिकॉर्डसेट के माध्यम से निम्नलिखित मेरे लिए ठीक काम करता है:
r.Update
r.Bookmark = r.LastModified
Debug.Print r("ItemID")
आपको .Requery
. से बचना चाहिए और .MoveFirst
, आप समवर्ती समस्याओं का परिचय दे रहे हैं। विचार करें:
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")