2011-07-22 6 views
22

रिकॉर्ड सेट खाली होने पर आप कैसे परीक्षण कर सकते हैं?एक्सेस वीबीए: रिकॉर्डसेट खाली होने पर परीक्षण कैसे करें? शून्य है?

 Dim temp_rst1 As Recordset 
     Dim temp_rst2 As Recordset 

     Set temp_rst1 = db.OpenRecordset("SELECT * FROM ORDER_DATA WHERE SKUS_ORDERED = '" & curSKU1 & "' AND [ORDER] = " & curOrder) 
     Set temp_rst2 = db.OpenRecordset("SELECT * FROM ORDER_DATA WHERE SKUS_ORDERED = '" & curSKU2 & "' AND [ORDER] = " & curOrder) 

     If IsNull(temp_rst1) Or IsNull(temp_rst2) Then MsgBox "null" 

मैं एक चयन कथन के आधार पर कुछ रिकॉर्ड सेट खोल रहा हूं। यदि कोई रिकॉर्ड नहीं है, तो क्या IsNull सच हो जाएगा?

+0

आपके प्रश्न का उत्तर है, तो ठीक से जवाब आप उत्तर की बाईं तरफ हरे चेकमार्क में क्लिक करके उपयोग करने के लिए प्राथमिकता दी आकर देखना याद रखें। –

उत्तर

33

मैं "द एंड फ़ाइल की" जाँच करेगा झंडा:

If temp_rst1.EOF Or temp_rst2.EOF Then MsgBox "null" 
+1

धन्यवाद यह काम करता है! – Shubham

+11

रिकॉर्डसेट खोलने के तरीके के आधार पर, आप यह भी कोशिश कर सकते हैं कि यह एक ही समय में रिकॉर्डसेट (यानी खाली) का अंत और अंत हो। फिर, आप recordSet.EOF और recordSet.BOF का परीक्षण करेंगे। –

+1

यदि कोई रिकॉर्डसेट डेटा की 1 पंक्ति देता है तो क्या बीओएफ और ईओएफ दोनों सच होंगे? मैंने नीचे @ टॉम-स्टूडियो सलाह का पालन किया है और मैं इसके बजाय 'रिकॉर्डकाउंट> 0' की जांच करता हूं। –

9

रिकॉर्डकाउंट वह है जो आप उपयोग करना चाहते हैं।

If Not temp_rst1.RecordCount > 0 ... 
+0

सहमत हुए। यह आपको यह जानने के आधार पर आपकी प्रसंस्करण को बदलने की अनुमति देता है कि क्वेरी प्रयास से रिकॉर्ड लौटाए गए हैं ताकि आप तदनुसार प्रसंस्करण को बदल सकें। +1 – Mohgeroth

+0

धन्यवाद यह काम करता है! – Shubham

+4

ध्यान रखें कि इस मामले में रिकॉर्डकाउंट आपको सटीक कुल रिकॉर्डकाउंट नहीं दे सकता है। आपको एक सटीक गिनती प्राप्त करने के लिए .MoveLast करना होगा (और उसके बाद। .MoveFirst यदि आप रिकॉर्डसेट के माध्यम से स्थानांतरित करना चाहते हैं)। उस ने कहा, यदि कोई * रिकॉर्ड * है तो यह 0 से अधिक होगा। निचली पंक्ति, यह उत्तर काम करता है लेकिन आपको RecordCount की idiosyncrasies के बारे में पता होना चाहिए। – mwolfe02

0

तो नहीं temp_rst1 कुछ भी नहीं है तो फिर है ...

+0

यह काम नहीं करेगा। temp_rst1 ** इस उदाहरण में ** कुछ भी नहीं होगा ** क्योंकि यह पहले दो पंक्तियों को सेट करता है। ओपी में दिलचस्पी है कि उसके रिकॉर्डसेट में रिकॉर्ड हैं या नहीं। अन्य दो उत्तरों में से कोई भी इसे पूरा करता है। – mwolfe02

+0

यह एडीओ के साथ सही ढंग से काम करता है। मुझे यकीन नहीं है कि यह डीएओ के साथ काम करता है या नहीं। मैं इसे निम्नलिखित प्रारूप में एडीओ के साथ बड़े पैमाने पर उपयोग करता हूं: 'temp_rst1 = temp_rst1.NextRecordset सेट करें अगर temp_rst1 नहीं है तो कुछ भी नहीं है ... ' – NDizzle

+0

मैं देखता हूं। मैं एडीओ के साथ बहुत कम करता हूं, इसलिए मैं वहां आपकी विशेषज्ञता को रोक दूंगा। डीएओ को आम तौर पर एमएस एक्सेस वीबीए के भीतर उपयोग के लिए अनुशंसा की जाती है, इसलिए मुझे लगता है कि ओपी चल रहा था पर्यावरण। – mwolfe02

6

temp_rst1.BOF और temp_rst1.EOF तो recordset खाली है। यह हमेशा रिक्त रिकॉर्डसेट, लिंक या स्थानीय के लिए सच होगा।

3

एक आसान तरीका यह लिखने के लिए:

Dim rs As Object 
Set rs = Me.Recordset.Clone 
If Me.Recordset.RecordCount = 0 then 'checks for number of records 
    msgbox "There is no records" 
End if 
संबंधित मुद्दे