VB6 Activex组件无法创建对象

时间:2013-06-25 16:23:22

标签: vb6 activex sql-server-2000 windows-server-2000

我正在对VB6应用程序进行一些小的更新。它在连接到SQL Server 2000数据库的Windows 2000服务器上运行。

我从服务器上获取了源代码的副本,并对其进行了更新并在本地进行了编译。我的本地计算机正在运行Windows 7 64x。我将.exe文件复制回服务器,当我尝试运行它时,我收到了运行时错误49:Activex组件无法创建对象。我知道当应用程序尝试使用RDO打开与数据库的连接时会发生此错误。

我可以从我的本地计算机和运行windows xp的虚拟PC运行.exe罚款。

此应用程序以前在服务器上工作,我所做的更改是它输出的文件的内容,因此不需要新的引用。

这些是它正在酝酿的界限:

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

2 个答案:

答案 0 :(得分:2)

我最近解决了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 \ Classes
  • Ctrl + F ,然后搜索上面的每个班级ID,例如{00020430-0000-0000-C000-000000000046}
  • 期望在HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Interface中找到Reference=条目,在HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID
  • 中查找Object=条目
  • 每次输入后,您都会注意到#1.2之类的版本。在我的情况下,我发现Version键中列出的相同版本号在我在注册表中找到匹配项的位置附近。如果版本不匹配,则可能值得注册正确版本的OCX或DLL文件。
  • 找到每个条目后,您可以单击regedit树并单击向左箭头,直到您返回Classes分支,然后搜索下一个条目。
  • 最重要的是,如果您没有找到您搜索的类ID的条目,则很可能导致Activex component can't create object错误。

就我而言,缺少的课程是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并从DEBUGWINDOWPROC = 1删除Conditional Compilation Arguments:让VB停止引用dbgwproc.dll。重建后,不再发生错误。

答案 1 :(得分:0)

您可能缺少某些用于RDO的DLL以在服务器上运行,请尝试以下操作:

http://support.microsoft.com/kb/195474 - 如何确定分发应用程序所需的RDO文件