sql - एमएस एक्सेस-वीबीए में रिपोर्ट से पैरामीटर




vba ms-access (2)

अगर आपके पास एक रिपोर्ट या प्रपत्र है जिसमें एक क्वेरी है जिसका रिकॉर्ड स्रोत है, तो आप क्वेरी के फ़ील्ड - जैसे कि StartDate - को रिपोर्ट या फ़ॉर्म पर नियंत्रण कर सकते हैं, और उस फ़ील्ड के मान (ओं) को प्राप्त कर सकते हैं नियंत्रण को संदर्भित करके VBA फ़ंक्शन उदाहरण के लिए, मान लें कि आपको DateReport रिपोर्ट नामित एक रिपोर्ट है। यदि DateReport के रिकॉर्ड स्रोत में एक StartDate फ़ील्ड है, तो आप रिपोर्ट पर एक टेक्स्ट बॉक्स बना सकते हैं - हम इसे StartDateBox कहते हैं - और इसके नियंत्रण स्रोत को "स्टार्टडेट" में सेट करें फिर VBA में, आप वर्तमान रिपोर्ट के लिए Report_DateReport.StartDateBox साथ इस फ़ील्ड का मूल्य प्राप्त कर सकते हैं। किसी प्रपत्र या रिपोर्ट के रिकार्ड स्रोत फ़ील्ड मूल्यों को किसी नियंत्रण के बिना बाध्य किए बिना संदर्भित करने के लिए एक अन्य तरीका हो सकता है, लेकिन मुझे यह परीक्षण करने के लिए अभी उपलब्ध एमएस एक्सेस नहीं है।

यदि आप कुछ मापदंडों (जैसे कि प्रारंभ दिनांक और समाप्ति तिथि) के साथ एक क्वेरी के आधार पर एक रिपोर्ट खोलते हैं, तो मुझे पता है कि मैं रिपोर्ट में उन मापदंडों को [रिपोर्ट] के रूप में इस्तेमाल कर सकता हूं! [ReportName]! [StartDate]! लेकिन अब मैं इन पैरामीटरों का उपयोग वीबीए फ़ंक्शन में करना चाहता हूं, लेकिन उसी अभिव्यक्ति का उपयोग मेरे लिए काम नहीं करता है:

MsgBox [Reports]![Test]![StartDate]

यह मुझे त्रुटि देता है:

रन-टाइम त्रुटि '2465': माइक्रोसॉफ्ट एक्सेस आपकी अभिव्यक्ति में निर्दिष्ट क्षेत्र 'स्टार्टडेट' नहीं मिल सकता है।


आप इसे एक सार्वजनिक वेरिएबल का इस्तेमाल करके और रिकॉर्ड स्रोत के गतिशील रूप से एसक्यूएल बदल सकते हैं।

आप रिपोर्ट को कॉल करने से पहले सार्वजनिक वैरिएबल में पैरामीटर मान को स्टोर कर सकते हैं।

पहले एक मॉड्यूल में एक पारा, उदाहरण के रूप में सार्वजनिक filtDate घोषित करें

दूसरे, रिपोर्ट चलाने से पहले filtDate के पैरामीटर मान को असाइन करें

उसके बाद, report_open रिपोर्ट की घटना में रिकॉर्ड स्रोत के एसक्यूएल को बदलें

Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = "SELECT * FROM Test WHERE [StartDate] = #" & filtDate & "#"
MsgBox  filtDate
End Sub

यहां, रिकॉर्डसोर्स के एसक्यूएल को गतिशील रूप से सेट किया जाता है और पैरामीटर मान को सीधे उपयोग किया जा सकता है।





access-vba