2011-10-07 15 views
7

काम करना बंद कर दिया है हमारे पास घंटों के समर्थन इंजीनियरों के लिए रोटा को प्रबंधित करने के लिए उपयोग की गई एक्सेल स्प्रेडशीट है। थोड़ी देर पहले, मैंने थोड़ा वीबीए कोड जोड़ा जो स्वचालित रूप से इंजीनियरों के फोन पर समर्थन फोन नंबरों को घंटों से अलग करता है।वीबीए से एडीओडीबी कनेक्शन

यह फ़ोन प्रदाताओं द्वारा संचालित डेटाबेस से कनेक्ट करके और डायवर्ट नंबर को अपडेट करके करता है।

इस दोपहर, यह अचानक केंद्रीय सर्वर पर काम नहीं कर रहा:

Dim Db As ADODB.Connection 

Sub ConnectDatabase() 
    Set Db = New ADODB.Connection 
    Db.Open "SupportMobileDb" 
End Sub 

कोड New ADODB.Connection लाइन पर रुक जाता है, और रिपोर्ट:

Run-time error '430': 
Class does not support Automation or does not support expected 
interface 

मैं अभी भी पर मैक्रो चला सकते हैं मेरी लैपटॉप, और यह सही ढंग से काम करता है। और केंद्रीय सर्वर पर, मैं अभी भी एक्सेल का उपयोग कर सकता हूं, और डेटासोर्स से सही तरीके से कनेक्ट कर सकता हूं। यह सिर्फ इस सर्वर पर वीबीए के माध्यम से काम नहीं करेगा।

मैक्रो 9 बजे सही ढंग से भाग गया और सभी फोनों को कार्यालय में बदल दिया, लेकिन 5:00 बजे कर्मचारियों के मैक्रो में बदलाव नहीं हुआ। मैं नहीं देख सकता कि विंडोज आज अपडेट किया गया था, या वास्तव में कोई अन्य बदलाव।

क्या किसी ने इससे पहले इस समस्या को देखा है?

उत्तर

16

ठीक है समस्या मिली। ऐसा लगता है कि किसी बिंदु पर, वीबीए सामान के बाहरी संदर्भों में से एक अनचाहे था (एडीओ 2.8 रिकॉर्ड्स)। मैंने संदर्भ वापस जोड़ा है और ऐसा लगता है कि अभी ठीक है। (!)

जब से मैं किसी भी तरह अपने ही सवाल का जवाब देने के लिए 3 upvotes मिल गया है, मैं बेहतर मामले अन्य लोगों को इस समस्या को देख रहे हैं में थोड़ा और अधिक विस्तार डाल चाहते हैं:

दृश्य मूल संपादक में, के तहत टूल्स -> संदर्भ, मेरे पास Microsoft ActiveX Data Objects 2.8 Library चयनित था। लेकिन Microsoft ActiveX Data Objects Recordset 2.8 Library अचयनित किया गया था। दिलचस्प बात यह है कि यह लाइब्रेरी विंडोज 7 के तहत इसे देखते समय एक विकल्प के रूप में भी प्रकट नहीं होती है, लेकिन मैक्रोज़ इसके बिना काम करते हैं।

स्पष्ट रूप से बहुत से लोगों को यह समस्या है ... ऊपर दिए गए मेरे उत्तर में समस्या हल हो गई है, लेकिन केवल कुछ लोग फ़ाइल को फिर से संपादित करने तक, उस बिंदु पर, Office का उनका संस्करण स्वचालित रूप से फिर से बनाता है समस्या, और मुझे इसे फिर से हल करना पड़ा।

1) आप लेट बाइंडिंग का उपयोग कर सकते हैं और पूरी तरह से संदर्भित पुस्तकालय से छुटकारा पाने:

दो दीर्घकालीन समाधान कर रहे हैं। इस पर अधिक जानकारी के लिए http://support.microsoft.com/kb/245115 देखें।

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

3

मैं बहुत सारे वीबीए काम करता हूं और हाल ही में इस पर बहुत कुछ आया हूं। मैं एक कार्यक्रम लिखूंगा और यह कुछ मामलों में लंबे समय तक ठीक होगा (साल के लिए) और फिर एक दिन कुछ कंप्यूटर इस त्रुटि को प्राप्त करना शुरू कर देते हैं।

डेवलपर को और अधिक स्पष्ट चीजों में से एक यह है कि ADODB.Connection और/या ADODB.Recordset स्वयं को स्वयं-पूंजीकरण बंद कर देते हैं। या तो एडीओडीबी लोअरकेस है या दूसरा भाग है। कभी-कभी, हालांकि, capiltization ठीक है और यह अभी भी होता है।

"नया सेट करें" भाग कोड परिवर्तन से कनेक्शन और/या रिकॉर्डसेट ऑब्जेक्ट के निर्माण को अलग करना मेरे लिए हर बार तय किया गया है।

विशेष रूप से, निम्नलिखित कोड तोड़ मरोड़ हमेशा मेरे लिए यह तय कर दी है:

बदलें से किसी तरह के संबंध ऑब्जेक्ट के निर्माण:

Dim con as New ADODB.Connection 

करने के लिए:

Dim con as ADODB.Connection 
Set con = New ADODB.Connection 

इसी तरह, बदल किसी भी रिकॉर्डसेट ऑब्जेक्ट्स का निर्माण:

Dim rs as New ADODB.Recordset 

करने के लिए:

Dim rs as ADODB.Recordset 
Set rs = New ADODB.Recordset 
2

मैं एक ऐसी ही समस्या है जहाँ मेरे VBA कोड अपने स्थानीय मशीन (विंडोज 7) पर ठीक काम किया था, लेकिन (Windows 2003 सर्वर) यह एक Citrix सर्वर से नहीं चल रहा था और साथ विफल कनेक्शन बनाने का प्रयास करते समय 430 की रन टाइम त्रुटि (सेट कॉन = नया ADODB.Connection)।

मैं खिड़कियों संस्करणों में अंतर के बारे में इन प्रतिक्रियाओं को पढ़ने जब तक नहीं सोचा था, और इसलिए जब मैं अनियंत्रित "Microsoft ActiveX डेटा ऑब्जेक्ट 2.8 लाइब्रेरी" और जाँच "Microsoft ActiveX डेटा ऑब्जेक्ट 2.7 लाइब्रेरी", यह सब ठीक काम किया

बस इसे पास करना चाहते हैं और इन पदों के लिए धन्यवाद कहना जो मुझे सही दिशा में ले जाते हैं।