2013-06-25 176 views
1

我正在對VB6應用程序進行少量更新。它運行在連接到SQL Server 2000數據庫的Windows 2000服務器上。VB6 Activex組件無法創建對象

我把源代碼的副本,從更新其服務器,並遵守在本地。我的本地機器正在運行Windows 7 64x。我將.exe文件複製回服務器,當我嘗試運行它時,我收到運行時錯誤49:Activex組件無法創建對象。我知道當應用程序嘗試使用RDO打開與數據庫的連接時會發生此錯誤。

我可以從我的本地機器並運行Windows XP我的虛擬PC運行.exe罰款。

此應用程序以前的工作在服務器上,我所做的更改都將它輸出這樣就不需要新的引用文件的內容。

這些都是它倒下的線路:

rdoEnvironments(0).CursorDriver = rdUseNone 
Set conDB = rdoEnvironments(0).OpenConnection("MRA", rdDriverNoPrompt, True) 
+2

你是積極的,你正在使用RDO而不是ADO?這可能與許多MDAC/DAC庫中的Win7 SP1兼容性中斷有關。 – Bob77

+0

謝謝。是的,它是RDO。 這些是它摔倒的路線。 (0).CursorDriver = rdUseNone 設置conDB = rdoEnvironments(0).OpenConnection(「MRA」,rdDriverNoPrompt,True) – user2433108

回答

1

我最近解決了Activex component can't create object錯誤如下:

  • 在文本編輯器中打開您的VB6項目的.vbp文件。
  • 在文件的頂部將所有的ActiveX對象的項目使用。在我的情況下,這些是:

    Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation 
    Object={22D6F304-B0F6-11D0-94AB-0080C74C7E95}#1.0#0; msdxm.ocx 
    Reference=*\G{3F4DACA7-160D-11D2-A8E9-00104B365C9F}#5.5#0#C:\WINDOWS\system32\vbscript.dll\3#Microsoft VBScript Regular Expressions 5.5 
    Reference=*\G{3D0758FA-4171-11D0-A747-00A0C91110C3}#a.0#0#C:\WINDOWS\system32\dbgwproc.dll#Debug Object for AddressOf Subclassing 
    Object={248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0; MSWINSCK.OCX 
    Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx 
    Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCX 
    Object={3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0; RICHTX32.OCX 
    
  • 打開註冊表程序。

  • 導航到HKEY_LOCAL_MACHINE \ SOFTWARE \類
  • Ctrl鍵 + ˚F,然後搜索每個類ID的上方,如{00020430-0000-0000-C000-000000000046}
  • 希望找到Reference=在HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下\接口條目,並在HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下Object=項\ CLSID
  • 每個條目,你會發現有像#1.2一個版本後。在我的情況下,我發現在Version密鑰附近列出了與我在註冊表中找到匹配項相同的版本號。如果版本不匹配,則可能值得註冊正確版本的OCX或DLL文件。
  • 找到每個條目後,您可以在註冊表編輯樹點擊並擊中左箭頭直到你回到Classes分支,然後搜索下一個條目。
  • 最重要的是,如果你沒有找到你搜索,這是最有可能導致Activex component can't create object錯誤的類ID的條目。

對我而言,缺課是Reference=*\G{3D0758FA-4171-11D0-A747-00A0C91110C3}#a.0#0#C:\WINDOWS\system32\dbgwproc.dll#Debug Object for AddressOf Subclassing。這是在調試器中運行VB6應用程序時使用的特殊類,但它不應與應用程序一起分發或在分發的應用程序中引用。我通過打開Project > <app name> Properties... > 'Make' tab並從Conditional Compilation Arguments:刪除DEBUGWINDOWPROC = 1來讓VB停止引用dbgwproc.dll。重建後,不再發生錯誤。

相關問題