एक आम पर्याप्त समस्या यह लगता है, लेकिन सबसे समाधान एकाधिक SQL कमान्ड, जो कुछ मेरा मानना है कि एडीओ/VBA के साथ नहीं किया जा सकता श्रृंखलाबद्ध का उल्लेख (मैं हालांकि इस संबंध में गलत दिखाए जाने के लिए खुशी होगी)।एक्सेल वीबीए का उपयोग कर नए डाले गए रिकॉर्ड की आईडी कैसे प्राप्त करें?
मैं वर्तमान में तो मेरी नई रिकॉर्ड सम्मिलित (मुझे आशा है) गारंटी नहीं है कि केवल नव डाला रिकॉर्ड वापस किया जा सकता पर्याप्त क्षेत्रों का उपयोग कर एक का चयन क्वेरी चलाते हैं। मेरे डेटाबेस को एक ही समय में एक से अधिक व्यक्तियों द्वारा उपयोग किया जाता है (प्रश्नों के बीच होने वाले किसी अन्य सम्मिलन का नगण्य जोखिम) और तालिकाओं की संरचना के कारण, नए रिकॉर्ड की पहचान करना आमतौर पर बहुत आसान होता है।
अब मैं एक मेज है कि विशिष्टता के लिए ज्यादा गुंजाइश, कृत्रिम प्राथमिक कुंजी में अन्य की तुलना में नहीं है अद्यतन करने के लिए कोशिश कर रहा हूँ। इसका मतलब है कि एक नया खतरा अनूठा नहीं हो सकता है, और मैं विशिष्टता को मजबूर करने के लिए एक फ़ील्ड जोड़ने के लिए नाराज हूं।
क्या कोई पहुँच तालिका में एक रिकॉर्ड डालने के लिए सबसे अच्छा तरीका है तो इस स्थिति में एक्सेल से नए प्राथमिक कुंजी क्वेरी है?
उत्तर के लिए धन्यवाद। मैंने @@IDENTITY
काम करने की कोशिश की है, लेकिन यह हमेशा नीचे दिए गए कोड का उपयोग करके 0 लौटाता है।
Private Sub getIdentityTest()
Dim myRecordset As New ADODB.Recordset
Dim SQL As String, SQL2 As String
SQL = "INSERT INTO tblTasks (discipline,task,owner,unit,minutes) VALUES (""testDisc3-3"",""testTask"",""testOwner"",""testUnit"",1);"
SQL2 = "SELECT @@identity AS NewID FROM tblTasks;"
If databaseConnection Is Nothing Then
createDBConnection
End If
With databaseConnection
.Open dbConnectionString
.Execute (SQL)
.Close
End With
myRecordset.Open SQL2, dbConnectionString, adOpenStatic, adLockReadOnly
Debug.Print myRecordset.Fields("NewID")
myRecordset.Close
Set myRecordset = Nothing
End Sub
कुछ भी जिम्मेदार होने का खड़ा है?
हालांकि, चेतावनियां सहायक के रेनॉड द्वारा आपूर्ति को देखते हुए (नीचे) क्या कोई अन्य विधि के साथ के रूप में @@IDENTITY
उपयोग करने के साथ लगभग उतना ही जोखिम लगता है, इसलिए मैं अब के लिए SELECT MAX
का उपयोग कर का सहारा लिया गया है। भविष्य के संदर्भ के लिए हालांकि मुझे यह देखने में दिलचस्पी होगी कि ऊपर दिए गए मेरे प्रयास में क्या गलत है।
का उपयोग करते हुए 'Max' मुश्किल हो सकता है ...: वास्तव में, आप भी तालिका निर्दिष्ट करने की आवश्यकता नहीं है। यदि आप केवल एक ही रिकॉर्डिंग रिकॉर्ड हैं, तो आगे बढ़ें। –