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




vba ms-access parameters access-vba (4)

और इसे कभी भी नहीं मिलेगा

मैं डायनामिक पैरामीटर वाले प्रश्नों का कभी इस्तेमाल नहीं करता। मैं फिल्टर मापदंडों का चयन करने के लिए किसी प्रपत्र पर नियंत्रण का उपयोग करता हूं और OpenReport कमांड के WHERE तर्क (ओपनफॉर्म के लिए) में नियंत्रणों का संदर्भ देता हूं।

DoCmd.OpenReport "Test", , , "[StartDate] = #" & Me.tbxStart & "#"
MsgBox = Me.tbxStart

या यदि आप वास्तव में डायनामिक पैरामीटर पसंद करते हैं - रिपोर्ट क्वेरी पैरामीटर फ़ॉर्म नियंत्रण का संदर्भ ले सकते हैं।

VBA कोड पैरामीटर नहीं मिलेगा लेकिन यह रिपोर्ट में पाठ बॉक्स को खोज सकता है जो पैरामीटर का संदर्भ देता है और उस पैरामीटर मान को खींचता है।

यदि आप कुछ मापदंडों (जैसे कि प्रारंभ दिनांक और समाप्ति तिथि) के साथ एक क्वेरी के आधार पर एक रिपोर्ट खोलते हैं, तो मुझे पता है कि मैं रिपोर्ट में उन मापदंडों को [रिपोर्ट] के रूप में इस्तेमाल कर सकता हूं! [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

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


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


हां, यह जावास्क्रिप्ट में काम करेगा। आप यह भी कर सकते हैं:

function func(a=10,b=20)
{
    alert (a+' and '+b);
}

func(); // Result: 10 and 20

func(12); // Result: 12 and 20

func(22,25); // Result: 22 and 25




sql vba ms-access parameters access-vba