2012-02-21 17 views
8

का उपयोग कर एक्सेस में किसी फॉर्म से टेक्स्ट मान प्राप्त करें, मैं वर्तमान में वीबीए का उपयोग करके एक्सेस के तहत मॉड्यूल में किए गए SQL क्वेरी में सेट करने के लिए किसी फ़ॉर्म से एक मान प्राप्त करना चाहता हूं। मैंनेवीबीए मॉड्यूल

value = Forms![NameOfForm]![NameOfTextbox] 

sqlquery = "...." & value & "....." 

यह एक त्रुटि (2450) कहता है कि यह निर्दिष्ट फॉर्म नहीं मिला है। मैं इस टेक्स्टबॉक्स का मूल्य कैसे प्राप्त कर सकता हूं ताकि मैं इसे अपने मॉड्यूल में उपयोग कर सकूं?

Thx

+0

क्या आप इसे आज़माते समय फॉर्म खोलते हैं? – Fionnuala

उत्तर

6

सुनिश्चित करने के लिए प्रपत्र खुला है अपने VBA कोड को संशोधित करें।

DoCmd.OpenForm "NameOfForm" 

त्रुटि # 2450 को रोकना चाहिए।

बाद में, आपको एक चर के लिए [NameOfTextbox] के मान को स्टोर करने की आवश्यकता नहीं है, फिर उस चर का उपयोग अपने SQL कथन को बनाने के लिए करें। आप इसके मूल्य का सीधे उपयोग कर सकते हैं।

sqlquery = "SELECT * FROM YourTable " & _ 
"WHERE some_field = '" & Forms![NameOfForm]![NameOfTextbox] & "';" 

या क्वेरी में टेक्स्टबॉक्स के बजाय (टेक्स्टबॉक्स के मूल्य के बजाय) को संदर्भित करें।

sqlquery = "SELECT * FROM YourTable " & _ 
"WHERE some_field = Forms![NameOfForm]![NameOfTextbox];" 

मैं मान लिया some_field एक पाठ डेटा प्रकार क्षेत्र है, इसलिए पहली क्वेरी उदाहरण में एकल उद्धरण के साथ पाठ बॉक्स मूल्य संलग्न। दूसरे उदाहरण पर ध्यान दें उद्धरणों की आवश्यकता नहीं है क्योंकि यह टेक्स्टबॉक्स को इसके मूल्य के बजाय नाम से संदर्भित करता है।

हालांकि, क्या आपको अपने मूल दृष्टिकोण (टेक्स्टबॉक्स मान को एक चर में संग्रहीत करना) जारी रखना चाहिए, अपने चर "मान" को नाम न दें क्योंकि मूल्य कई ऑब्जेक्ट्स की संपत्ति के साथ भ्रमित हो सकता है।