2008-10-22 20 views
8

में किसी भी फॉर्म को खोलने से पहले कोड चलाना तो मेरे पास फ्रंट और बैक एंड के साथ एक्सेस डेटाबेस है। मैं इसे जल्द ही उपयोगकर्ताओं को वितरित कर दूंगा, लेकिन मेरे पास इस पर कोई नियंत्रण नहीं है कि वे फाइलों को अपने कंप्यूटर पर कहां रखेंगे। हालांकि, मुझे लगता है कि मैं उन पर एक ही फ़ोल्डर में सामने और पीछे की ओर डालने पर भरोसा कर सकता हूं।एक्सेस

जैसे, जब फ्रंट एंड खुलता है, तो मैं यह जांचना चाहता हूं कि लिंक्ड टेबल बैक-एंड डेटाबेस से सही ढंग से जुड़े हुए हैं। मेरे पास इसके लिए कामकाजी कोड है; हालांकि मुझे नहीं पता कि इसे कहां रखा जाए। जब फ्रंट एंड खुलता है, तो मेनू फॉर्म स्वचालित रूप से खोला जाता है (स्टार्ट-अप संवाद बॉक्स के माध्यम से कॉन्फ़िगर किया जाता है)। मैंने कोड को OnOpen ईवेंट में रखा है, जो मैंने सोचा था कि किसी भी डेटा को लोड करने से पहले हुआ था, लेकिन जब मैं इसका परीक्षण करता हूं, तो मुझे एक संदेश मिलता है जो मुझे बता रहा है कि बैक-एंड नहीं मिला है (यह अपने पुराने स्थान को देख रहा है)।

असल में, क्या कोई ऐसी घटना है जिसका उपयोग मैं किसी भी रूप से खोले जाने से पहले चला सकता हूं?

+0

मुझे एक ही समस्या है, और मेरे लिए नीचे दिए गए वर्तमान उत्तर काम नहीं करते हैं। यहां तक ​​कि जब मैं किसी फ़ंक्शन में कुछ डालता हूं ऑटोएक्सैक मैक्रो से, यह निष्पादित किया जाता है कि त्रुटि के बाद बैकएंड टेबल नहीं मिल सकते हैं। इसलिए इससे पहले तालिका लिंक अपडेट करने का कोई मौका नहीं है। क्या इसके लिए कोई समाधान है या क्या मुझे कुछ याद आ रहा है? –

उत्तर

6

मैक्रो बनाएं और इसे "autoexec" नाम दें। मैक्रो क्रिया के लिए, "रनकोड" का चयन करें और उसके बाद फ़ंक्शन का नाम उस फ़ंक्शन के नाम पर सेट करें जिसका उपयोग आप अपनी लिंक की गई तालिकाओं को देखने के लिए करते हैं।

+0

क्या इसमें है एक समारोह होने के लिए? मेरे पास एक सार्वजनिक सब है जिसे चेकलिंक्स कहा जाता है, लेकिन जब मैं मैक्रो चलाने की कोशिश करता हूं, तो यह ते एलएलएस मुझे एक्सेस अभिव्यक्ति में 'चेकलिंक्स' नाम नहीं मिल सकता है ... –

+0

ऐसा लगता है कि यह एक फ़ंक्शन होना आवश्यक है, लेकिन मुझे नहीं लगता कि यह एक मूल्य देता है या नहीं, तो इससे कोई फर्क पड़ता है। – Matt

+0

और आप कार्यों को कॉल कर सकते हैं जैसे कि वे वापसी मूल्य के साथ कुछ भी करने के लिए परेशान किए बिना subs subs हैं। –

2

मैट ने कहा, मैक्रो बनाएं, इसे "autoexec" कहें, और मैक्रो एक्शन के रूप में "रनकोड" चुनें। फ़ंक्शन नाम तर्क उस फ़ंक्शन का नाम होना चाहिए जिसे आप चलाना चाहते हैं (और उप नहीं), और यदि फ़ंक्शन में कोई तर्क नहीं है, तो आपको अभी भी अंत में() अंत में रखना चाहिए, या यह काम नहीं करेगा।

+0

मैं हमेशा इस भाग को भूल जाता हूं और मैं इसे कॉपी/पेस्ट कर दूंगा ताकि इसे दूसरों के लिए हाइलाइट किया जा सके [आपको अभी भी अंत में रखना चाहिए), या यह काम नहीं करेगा।] – aSystemOverload

1

उसी फ़ोल्डर में अपना फ्रंट एंड बैक एंड डालने से पहले, इसके बारे में सोचें। क्या 2 फ़ोल्डरों के लायक नहीं है? एक ही कंप्यूटर पर एक ही बैक-एंड डेटाबेस तक पहुंचने वाले एकाधिक उपयोगकर्ताओं के बारे में क्या? नेटवर्क के माध्यम से एक ही डेटाबेस तक पहुंचने वाले एकाधिक उपयोगकर्ताओं के बारे में क्या? यदि आपका ऐप मूल रूप से एकल-उपयोगकर्ता ऐप है तो फ्रंट एंड बैक एंड टाइपोग्राफी होने की आवश्यकता क्या है?

आपकी कनेक्टिविटी खो जाने पर, आप अपने ऐप में एक संवाद बॉक्स क्यों नहीं जोड़ते हैं? आप अपने कोड में फ़ाइलडिअलॉग ऑब्जेक्ट बना सकते हैं, जिससे उपयोगकर्ता अपने कंप्यूटर/नेटवर्क पर कहीं भी * mdb फ़ाइल ब्राउज़ कर सकता है। यह तब नियंत्रित करना संभव है कि चयनित एमडीबी फ़ाइल में सभी अनुरोधित टेबल शामिल हैं और संबंधित लिंक खोलें (मुझे लगता है कि आप ट्रांसफरडेटाबेस कमांड का उपयोग कर रहे हैं)।

और आपके ऐप के लिए अतिरिक्त टूल/संदर्भों के बारे में क्या होगा जब आप इसे अपने अंतिम उपयोगकर्ताओं को वितरित करेंगे? डिफ़ॉल्ट रूप से, एमएस एक्सेस 3 बुनियादी लोगों रिकॉर्ड:

  • दृश्य मूल आवेदन के लिए
  • माइक्रोसॉफ्ट एक्सेस लाइब्रेरी
  • माइक्रोसॉफ्ट डीएओ लाइब्रेरी

अपने अनुप्रयोग इस तरह के एडीओ या के रूप में, कुछ और की जरूरत है Office ऑब्जेक्ट्स (ADODB.recordset या Office कमांडबार उदाहरण के लिए), आपको प्रत्येक इंस्टॉलेशन के लिए मैन्युअल रूप से संदर्भ जोड़ना होगा, क्योंकि अंतिम उपयोगकर्ता VBA विंडो खोलने और टूल/संदर्भ मेनू तक पहुंचने में सक्षम नहीं होगा।

इसलिए, यदि आपको अपने कंप्यूटर को एकाधिक कंप्यूटरों पर तैनात करने की आवश्यकता है, तो मैं दृढ़ता से सलाह देता हूं कि आप इस free one जैसे परिनियोजन टूल का उपयोग करें। इसे ठीक से उपयोग करने में सक्षम होने के लिए आपको कुछ घंटों की आवश्यकता होगी, लेकिन परिणाम इसके लायक है। आप अपने ग्राहकों को एक असली इंस्टॉलर मॉड्यूल देने में सक्षम होंगे। यह फ़ोल्डर्स बनाएगा, अनुरोधित शॉर्टकट जोड़ें, और कंप्यूटर की रजिस्ट्री में संदर्भ प्रबंधित करेगा। इससे आपकी तैनाती निश्चित रूप से दर्द रहित हो जाएगी!

संपादित करें: ऑटोएक्सैक मैक्रो निश्चित रूप से किसी भी घटना से पहले कोड को कॉल करने का सही समाधान है।

संपादित करें: यह न भूलें कि आपके अंतिम उपयोगकर्ता एक्सेस के रनटाइम संस्करण का लाभ कमा सकते हैं, जो मुफ़्त है!

2

मैं आम तौर पर एक छोटा सा फॉर्म बनाना पसंद करता हूं जो कई चेक चलाता है, जैसे बैक-एंड ढूंढना और आगे, और विभिन्न विकल्पों को सेट करना। इस फार्म के खुले घटना के लिए कोड हो सकता है:

Me.Visible = False 
'Determines if the database window is displayed 
SetProp "StartupShowDBWindow", False, dbBoolean 
'Hide hidden and system objects 
SetOption "Show Hidden Objects", False 
SetOption "Show System Objects", False 

'Find back end 
CheckLinkPath 

मैं तालिकाओं का एक मेज रखने के सामने के अंत में जुड़े होने की है और यदि कोई याद कर रहे हैं, इस फार्म या त्रुटि रिपोर्ट करने के लिए इस्तेमाल किया जा सकता है, उस मामले के लिए कोई और त्रुटि।

Set RS = CurrentDb.OpenRecordset("Select TableName From sysTables " _ 
& "WHERE TableType = 'LINK'") 

RS.MoveFirst 
strConnect = db.TableDefs(RS!TableName).Connect 
If Not FileExists(Mid(strConnect, InStr(strConnect, "DATABASE=") + 9)) Then 
    'All is not well 
    blnConnectError = True 
Else 
    Do Until RS.EOF() 
     If db.TableDefs(RS!TableName).Connect <> strConnect Then 
      blnConnectError = True 
      Exit Do 
     End If 

     RS.MoveNext 
    Loop 
End If 

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

0

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

  1. अपने लिंकटेबल्स() फ़ंक्शन को कॉल करें, अगर यह विफल हो जाता है तो स्टार्टअप को समाप्त करने के लिए शर्त सेट करें।
  2. अपने "मुख्य" स्टार्टअप मेनू फ़ॉर्म पर कॉल करें।
0

आप उन्हें एक * .bat फ़ाइल भेज सकता है कि प्रतियां ग डेटाबेस:।। \ अस्थायी (या जो भी फ़ोल्डर आपके द्वारा चुने गए सेटअप बैट फ़ाइल बनाने से पहले इस फ़ोल्डर से जुड़ा हुआ यह की ज़िप बंद और को ईमेल उन्हें। आपको अतिरिक्त आवश्यक कोड से चिंता करने की आवश्यकता नहीं होगी।