2012-01-20 12 views
5

पर संकलित किया गया है, तो मुझे कुछ समस्याएं आ रही हैं जब मैं वीबी 6 पर कुछ विरासत ऐप्स संकलित करता हूं क्योंकि मुझे विंडोज 7 में एक नई विकास मशीन मिली है। (मेरा पुराना विंडोज एक्सपी पर था।)"नया ADODB.Connection" पर "अमान्य प्रक्रिया कॉल या तर्क" त्रुटि केवल तभी अगर विंडोज 7

अगर मैं अपनी एक्सपी मशीन पर प्रोजेक्ट संकलित करता हूं, तो सब कुछ ठीक है। यदि मैं अपनी विंडोज 7 मशीन पर एक ही प्रोजेक्ट संकलित करता हूं, तो यह अभी भी ठीक है, लेकिन अगर मैं इसे एक्सपी मशीन पर चलाने की कोशिश करता हूं, तो मुझे यह त्रुटि मिली।

त्रुटि संख्या: 5
विवरण: अमान्य प्रक्रिया कॉल या तर्क

मेरी त्रुटि हैंडलर के लिए धन्यवाद, मुझे पता है कि लाइन है कि इस त्रुटि फेंक है:

Dim objConn As ADODB.Connection 
--> Set objConn = New ADODB.Connection 

मैं दोनों मशीनों और Project - References दोनों के संदर्भों की तुलना में समान हैं: (माइक्रोसॉफ़्ट एक्टिवैक्स डेटा ऑब्जेक्ट्स 2.7 लाइब्रेरी)

इस त्रुटि का कारण क्या हो सकता है?

+0

सुनिश्चित नहीं है कि यह थोड़ा अजीब बात है, क्या होता है यदि आप इसे एक पंक्ति में संशोधित करते हैं "Dim objConn new ADODB.Connection" के रूप में? –

उत्तर

2

यह ज्ञात Microsoft issue है, लेकिन मुझे नहीं लगता कि यह एक बग था; मेरा मानना ​​है कि सुरक्षा कारणों से संगतता टूट गई थी। यदि आपके पास certain hotfix स्थापित है तो समस्या गैर-एसपी 1 बिल्ड पर मौजूद हो सकती थी। माइक्रोसॉफ्ट केबी में संदर्भित कुछ विकल्प हैं। यहां एक और article अपडेट प्रदान करना है।

हम इस समस्या में भाग गए और हमने सभी डेवलपर मशीनों पर पिछड़ा संगतता पैच तैनात करने और पीछे की संगतता संदर्भ के साथ सभी विरासत एडीओ संदर्भों को प्रतिस्थापित करने का निर्णय लिया। यह हमारे लिए अच्छा काम किया है।

+0

मुझे wqw के समाधान का परीक्षण करने में प्रसन्नता हो रही है, 2517589 केबी में माइक्रोसॉफ्ट द्वारा प्रदान किया गया समाधान पुरानी फ़ाइल को विंडोज़ के पिछले संस्करण के रूप में सहेजने से अधिक * साफ * है क्योंकि यह स्पष्ट रूप से पिछड़ा संगतता संदर्भ के रूप में नए संदर्भ की पहचान करता है। एक बार फिर धन्यवाद! – DavRob60

+0

तो पता है कि आपको परियोजना संदर्भों को "पिछड़ा संगत" टाइपेलिब में बदलना है, फिर SP2 लागू होने के बाद आपको इन्हें "नियमित" टाइपेलिब में बदलना होगा। – wqw

+0

@wqw - मैंने माइक्रोसॉफ्ट से कुछ भी नहीं देखा है यह एसपी 2 में बदल दिया जाएगा। क्या आपके पास एक लिंक है? – UnhandledExcepSean

4

यह ज्ञात problem in SP1 for Win7 है जिसे SP2 में ठीक किया जाएगा।

एसपी 1 में इस मुद्दे को संभालने का तरीका पुराने एडीओ टाइपेलिब फ़ाइल को C:\Program Files (x86)\Common Files\System\ado में विन 7 आरटीएम से कॉपी करना है और इसे वहां पंजीकृत करना है।

इस पुराने एडीओ टाइपेलिब को पंजीकृत करना एक मामूली काम नहीं है क्योंकि कई फोरम धागे दिखाए गए हैं। यहाँ typelib मुद्दा हलचल ठीक करने के लिए एक बैच फ़ाइल हम हमारी दुकान में उपयोग करते हैं:

@echo off 
set regtlib="%windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe" 
set subinacl="%~dp0subinacl.exe" 
set target_dir=%CommonProgramFiles%\System\ado 
if not "%CommonProgramFiles(x86)%"=="" set target_dir=%CommonProgramFiles(x86)%\System\ado 

copy "%~dp0msado28_old.tlb" "%target_dir%\msado28_old.tlb" > nul 
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /setowner=Administrators > nul 
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /grant=Administrators=F > nul 
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /setowner=Administrators > nul 
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /grant=Administrators=F > nul 
%regtlib% -u "%target_dir%\msado28.tlb" 
%regtlib% "%target_dir%\msado28_old.tlb" 

दोनों msado28_old.tlb और subinacl.exeinstall.bat फ़ाइल और regtlibv12.exe उपयोगिता के लिए .NET फ्रेमवर्क 4.0 सेटअप को उसी फ़ोल्डर में रखा आप की जरूरत है।

अब आप Win7 बॉक्स पर एडीओ संदर्भित अपनी परियोजनाओं को पुन: संकलित कर सकते हैं जिसमें विंडोज के पिछले संस्करणों पर कोई संगतता समस्या नहीं है।

+0

आपको संदेह नहीं है, लेकिन मुझे कुछ भी कहना है कि वे अपने डफ को बंद कर देंगे और एसपी 2 में इसे ठीक करेंगे। चूंकि यह एसपी 1 को याद/जारी किया जाना चाहिए था। मुझे यह देखने से नफरत है कि Win7 SP1 ने इसमें कितना अधिक सूक्ष्म शिकंजा दफनाया है। हम्म, शायद मुझे सिर्फ आपके लिंक का पालन करना चाहिए, हे? – Bob77

+0

मुझे यह दिखाई देता है लेकिन एसपी 2 का कोई जिक्र नहीं है, मैं यद्यपि देख रहा हूं और यहां वापस जांच कर रहा हूं। http://blogs.msdn.com/b/psssql/archive/2011/10/03/yes-we-made-a-mistake-and-are-finally-going-to-fix-it.aspx – Bob77

+0

वे वापस आ गए 2.x और 6.0 टाइपेलिब और Win8 पूर्वावलोकन में x64 (केवल वीबीए) विकास के लिए 6.1 टाइपेलिब भेज दिया गया।मुझे लगता है (कहीं पढ़ा है) इन्हें Win7 SP2 में भी शामिल किया जाएगा। मुझे ज्यादातर तब तक परवाह नहीं है जब तक कि Win7 RTM टाइपेलिब काम कर रहा है - हम अपने बिल्ड सर्वर के लिए Win2003 का उपयोग कर रहे हैं। – wqw