2015-07-02 8 views
5

के साथ बनाए गए फॉर्म तक पहुंचने के लिए वैकल्पिक ओपनएआरजी पास करना परिदृश्य: मैंने Rubberduck के सुझाव के अनुसार वैकल्पिक ओपनएआरजीएस संपत्ति बनाने के लिए इस कोड का उपयोग करने का प्रयास किया, लेकिन मैं इसे काम नहीं कर सकता। मुझे लगता है कि मैं यहाँ कुछ याद कर रहा हूं, लेकिन मुझे पता नहीं है कि क्या।'न्यू'

कोड:

Public varAltOpenArgs As Variant 
Dim FormX as form 

Public Property Let AltOpenArgs(value As Variant) 
    varAltOpenArgs = value 
End Property 

Public Property Get AltOpenArgs() As Variant 
    AltOpenArgs = varAltOpenArgs 
End Property 

प्रपत्र का एक नया उदाहरण इस प्रपत्र (form1) से खोला जाता है का उपयोग कर:

Set frmX = New 
frmX.AltOpenArgs = "abcde" 
frmX.SetFocus 

समस्या: संपत्ति AltOpenArgs एक खाली होता है स्ट्रिंग ("") जब Form_Open में बुलाया जाता है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है? मैं एक्सेस 2010 (32) का उपयोग कर रहा हूं।

उत्तर

1

समस्या यह है कि जैसे ही आप कोड की अगली पंक्ति से पहले नया उदाहरण (Set frmX = New Form_MyExampleForm) बनाते हैं, जहां आप AltOpenArgs का मान सेट करते हैं, सभी घटनाएं फायरिंग कर रही हैं।

यह कभी काम नहीं करेगा क्योंकि एक्सेस फॉर्म को एप्लिकेशन द्वारा तत्काल बनाया जा सकता है और आप वास्तव में घटनाओं पर नियंत्रण नहीं रखते हैं। यदि आप पूरी तरह OpenArgs में बनाया उपयोग नहीं कर सकते हैं, तो आप कुछ इस तरह कर सकता है जहां संपत्ति Let से एक नियमित चल रहे हैं:

Public Property Let AltOpenArgs(value As Variant) 
    varAltOpenArgs = value 
    FancyRoutine 
End Property 

Private Sub FancyRoutine() 
    'Do whatever fancy stuff you want to do 
    MsgBox AltOpenArgs 
End Sub 

मैं तुम्हें क्या कोशिश कर रहे हैं की तर्ज पर कुछ करना (हालांकि नहीं subforms के लिए Form_Open घटना का उपयोग कर)। यह ऐसा दिखाई दे सकता है:

Dim frm As Form_MyExampleForm 
Me.SubformControl.SourceObject = "MyExampleForm" 
Set frm = MainSubform.Form 
frm.AltOpenArgs = "whatever you want" 
+0

हाय डॉन। आपके जवाब के लिए धन्यवाद। अधिक विशिष्ट होने के लिए (ठीक है, मुझे शुरुआत से अधिक जानकारी दी जानी चाहिए) मैं ओपनफॉर्म कमांड का उपयोग नहीं कर सकता क्योंकि मैं एक ही फॉर्म (बहु-उदाहरण) का उपयोग कर रहा हूं फॉर्म 2 को नया फॉर्म_फॉर्म 1 काम नहीं करेगा। लेकिन एक कामकाज के रूप में अब मैं TempVars का उपयोग करता हूं! [AltOpenArgs] और यह वास्तव में मुझे अच्छी तरह से काम करता है। – Art

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