我正在对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)
答案 0 :(得分:2)
我最近解决了Activex component can't create object
错误,如下所示:
.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
打开注册表应用
Reference=
条目,在HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID Object=
条目
#1.2
之类的版本。在我的情况下,我发现Version
键中列出的相同版本号在我在注册表中找到匹配项的位置附近。如果版本不匹配,则可能值得注册正确版本的OCX或DLL文件。Classes
分支,然后搜索下一个条目。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文件