2010-12-29 15 views
6

मेरे पास एक फॉर्म (FORM-A) है जिसके लिए उपयोगकर्ता को वाहन चुनने की आवश्यकता होती है। उपयोगकर्ता को FORM-A पर एक बटन पर क्लिक करना चाहिए जो कि चुनिंदा वाहन है। एक चयन फ़ॉर्म (FORM-B) खोलना चाहिए जहां उपयोगकर्ता वाहन चुन सकता है। चयनित मूल्य को वापस FORM-A पर संप्रेषित किया जाना चाहिए।एमएस एक्सेस: फॉर्म कैसे एक-दूसरे के लिए मूल्यों को संवाद करते हैं?

आप एमएस एक्सेस 2010 में इसे कैसे पूरा करेंगे?

FORM-B एक निरंतर रूप है जिसमें वाहन की एक तस्वीर और कुछ अन्य जानकारी शामिल है।

+0

में मदद करता है तुम क्यों पूर्व निर्धारित किया है कि एक पॉपअप प्रपत्र ऐसा करने के लिए सही तरीका है? मुख्य रूप पर एक ड्रॉपडाउन सूची क्यों नहीं? –

+0

मैं मानता हूं कि मैंने शुरुआत में ऐसा किया था, लेकिन बाद में मैं चयन प्रक्रिया में वाहन की एक तस्वीर शामिल करना चाहता था। जब तक कुछ सूची चयन नियंत्रण नहीं होता है जो ऐसा कर सकता है, मैं या तो एक सबफॉर्म या पॉपअप से फंस गया हूं। पॉपअप उपयोगकर्ता को लगता है कि चयन निश्चित है, जबकि सबफॉर्म (निरंतर रूप) उपयोगकर्ता को संदेह करता है कि चयन वास्तव में हुआ है। – cmaduro

उत्तर

11

जो मैं आपके प्रश्न से समझता हूं, उससे आप एक प्रकार का पॉप-अप खोलने के लिए फॉर्मबी चाहते हैं। जब पॉप-अप बंद हो जाता है, तो इसका परिणाम कॉलिंग फॉर्म में कहीं भी रखा जाता है।
समाधान प्रस्ताव:
ए) सिंटैक्स docmd.openform "formB", windowmode:=acDialog का उपयोग कर ओपन फॉर्मबी।
यह तब तक अगली पंक्तियों के निष्पादन को रोक देगा जब तक कि फॉर्मबी बंद या छुपा न हो जाए।
बी) फॉर्मबी के ठीक बटन में, बस फॉर्म को छुपाएं, इसे बंद न करें।
ग) जब कोड forma में शुरू, आप कर सकते हैं अब

  1. जांच अगर formB अभी भी खुला है। यदि नहीं, तो इसे रद्द कर दिया गया है

अन्यथा छिपा formB में मूल्य (अभी भी खुला), तो करीब formB पढ़ा, तो आप भी formB बंद करने से पहले forma में एक नियंत्रण अद्यतन करने के लिए हो सकता था। लेकिन मुझे उस दृष्टिकोण को पसंद नहीं है क्योंकि तब फॉर्मबी पुन: प्रयोज्य नहीं है, और यह फॉर्म बी और फॉर्म ए के बीच एक अनावश्यक निर्भरता बनाता है।

+1

यदि आपके पास अलग संवाद होना है - तो यह मेरे पास जाने के तरीके की तरह लगता है। –

+1

इस तरह की चीज को एक फ़ंक्शन में बदलें जिसे पूरे एप्लिकेशन में बुलाया जा सकता है। आप फ़ंक्शन को प्रत्येक प्रकार के फ़ील्ड के साथ मूल्यों का एक जटिल सेट वापस कर सकते हैं जिसमें आप वापस लौटना चाहते हैं। एक बूलियन के रूप में "मान्य" नामक एक को छोड़ दें जो कह सकता है कि यह – akc42

+1

से काम करता है या रद्द कर दिया गया है, यह सीमित प्रणाली का एक अच्छा समाधान है। मैंने पिछले में पास किया है (कॉलिंग फॉर्म का नाम और कॉलिंग फॉर्म पर एक छिपे हुए फ़ील्ड को लौटने वाले मूल्य को स्टोर करने के लिए, लेकिन फॉर्म को खोलने और बदलने के लिए झूठ को दिखाई देने वाली स्थिति भी फॉर्म के कॉलिंग कोड को जारी रखने का कारण बनती है अगर संवाद बॉक्स बंद कर दिया गया था तो यह बहुत आसान है! :) धन्यवाद +1 – GazB

0

मुझे यकीन नहीं है कि आपको इसके लिए एक अलग रूप की आवश्यकता क्यों होगी - केवल पहले टेक्स्टबॉक्स डेटाबेस में वाहनों के सभी रिकॉर्डों की एक सूची हो, जहां आप एक का चयन करेंगे, और बाकी वाहन जानकारी है वाहन तालिका से स्वत: पॉप्युलेट, लेकिन आपकी मूल तालिका में कॉपी नहीं किया गया। बेशक, मुझे आपकी टेबल संरचना के बारे में निश्चित नहीं है, इसलिए इस विधि के लिए एक कारण हो सकता है जो मेरे लिए स्पष्ट नहीं है।

विधि के लाभों

ऊपर है कि यदि आप अधिक वाहनों जोड़ने के लिए, अपने चयन बॉक्स स्वचालित रूप से अद्यतन किया जाता है है - और आप रूपों आप एक न्यूनतम (हमेशा एक अच्छा प्रदर्शन चाल)

0

आप कर सकते हैं करने के लिए लोड करने के लिए है रखना फॉर्म ए के भीतर फॉर्मबी का एक उदाहरण बनाएं और इसे नियंत्रित करें। फॉर्मए के लिए नीचे वीबीए कोड है। फॉर्मए पर एक बटन पर क्लिक करते समय, आप फॉर्मबी का एक नया उदाहरण बनाते हैं और इसे फोकस देते हैं। उसी समय, आप इसके नियंत्रण के लिए गुण सेट कर सकते हैं। आप फॉर्म बी पर अपने नियंत्रण में सही तस्वीर सेट करने के लिए इस दृष्टिकोण का उपयोग कर सकते हैं। उम्मीद है कि इससे मदद मिलती है।

उदाहरण:

Option Compare Database 

Dim fB As Form_FormB 

Private Sub btnA_Click() 
    Set fB = New Form_FormB 
    fB.SetFocus 
    fB.tbxB.Text = "Some text sent from A to B!" 
End Sub 

आप दोनों रूपों में हर समय दिखाई देना चाहते हैं, मैं सभी वाहनों की सूची के साथ एक उप-प्रपत्र का उपयोग कर या बस का सुझाव देते हैं एक है कि उपयोगकर्ता द्वारा चुने गए विवरण।

0

आप इस तरीके के रूपों में संदर्भों का संदर्भ दे सकते हैं! FormName! ControlName। एक बार जब आप देखते हैं कि यह कैसे काम करता है तो आप इसे अपने मौजूदा सेटअप के साथ काम करने के लिए मूर्ख बना पाएंगे। चलिए फॉर्म-ए पर टेक्स्ट बॉक्स को 3 नियंत्रण, फॉर्म-बी पर एक छवि और फॉर्म-बी पर एक टेक्स्ट बॉक्स का उपयोग करते हैं। फॉर्म-ए पर टेक्स्ट बॉक्स को txtVehicle नाम दिया जाएगा, फॉर्म-बी पर छवि को imgVehicle नाम दिया जाएगा और फॉर्म-बी पर टेक्स्ट बॉक्स को txtVehicleName नाम दिया जाएगा। आप गुणों के भीतर नियंत्रण का नाम सेट कर सकते हैं। जब आप imgVehicle पर क्लिक करते हैं तो यह txtVehicleName से txtVehicle में मान डाल देगा।

आपको थोड़ा कोडिंग करना होगा - यह आसान है हालांकि आपने इसे पहले नहीं किया है। छवि के गुणों के तहत आप घटनाओं को देखेंगे। यदि आप "ऑन क्लिक" ईवेंट पर क्लिक करते हैं तो आपको एक ड्रॉप डाउन सूची मिल जाएगी। विकल्पों में से एक [घटना प्रक्रिया] होगी - इसे चुनें। उस पर 3 बिंदुओं वाला एक छोटा बटन भी पंक्ति के अंत में दिखाई देगा। इसे क्लिक करें और आपको कोड कोड में इस तरह के कुछ कोड के साथ ले जाना चाहिए।

Private Sub imgVehicle_Click() 

End Sub 

स्थान है जहां आप अपने कोड डाल दिया। ऐसा कुछ काम करना चाहिए। यह अपने सबसे सरल रूप में है।

Private Sub imgVehicle_Click() 
    Forms!Form-A!txtVehicle=forms!Form-B!txtVehicleName 
End Sub 

अब हालांकि यह काम करेगा, ऐसी कुछ चीजें हैं जिन्हें हमें इस विधि में करना चाहिए जो हम नहीं हैं। हमें फॉर्म-बी को सीधे संदर्भित करना चाहिए क्योंकि हम इसमें हैं, हमें यह सत्यापित करना चाहिए कि फॉर्म-ए वास्तव में खुला है।

Private Sub imgVehicle_Click() 
    If currentproject.allforms(“Form-A”).isloaded then 
      Forms!Form-A!txtVehicle=me!txtVehicleName 
    End if 
End Sub 

आशा है कि

+0

यह काम नहीं करता है, क्योंकि केवल केंद्रित तत्वों का संदर्भ दिया जा सकता है। –

+0

किसी तत्व या किसी फ़ॉर्म को संदर्भित करने के लिए फ़ोकस की आवश्यकता नहीं है। फॉर्म खुले रहना चाहिए, लेकिन दृश्यमान होने की भी आवश्यकता नहीं है। जैसा ऊपर वर्णित है, सबफॉर्म को स्पष्ट रूप से संदर्भित किया जाना चाहिए। कुछ गुण हैं जो केवल फोकस के साथ उपलब्ध हैं, जैसे टेक्स्टबॉक्स पर टेक्स्ट प्रॉपर्टी, लेकिन वे अल्पसंख्यक हैं। – Praesagus

+0

यह उत्तर क्यों दिया गया है? – Praesagus

संबंधित मुद्दे