[英]How do I resolve “Run-time error '429': ActiveX component can't create object”?
My company has a VB6 application using Crystal Reports 7 which a client has asked to be installed on Windows 7 32 bit. 我的公司有一个使用Crystal Reports 7的VB6应用程序,客户端要求在Windows 7 32位上安装它。 It is currently installed on Windows XP 32bit SP2 machines at the client. 它目前安装在客户端的Windows XP 32位SP2计算机上。 Connection to the DB is done via ODBC to SQL Server 2000 instance on another server. 与DB的连接是通过ODBC到另一台服务器上的SQL Server 2000实例完成的。
On Windows 7, the installation works fine, however when you try to open the application, the error is given. 在Windows 7上,安装正常,但是当您尝试打开应用程序时,会出现错误。
I have looked at the following: 我看过以下内容:
I've noticed two items in the knowledge base that relate to this 我注意到知识库中有两个与此相关的项目
Finally, due to complexities, I am not allowed to make code changes to this application. 最后,由于复杂性,我不允许对此应用程序进行代码更改。 Even if I was, I'm not a VB6 programmer, just the guy who got the terribly support project! 即使我是,我也不是VB6程序员,只是得到了非常支持项目的人! If code changes are required, then I'll have to investigate using WinXP mode. 如果需要更改代码,那么我将不得不使用WinXP模式进行调查。
Update : I get the same error in XP Mode. 更新 :我在XP模式下遇到同样的错误。 That's a Win XP with SP3 VM. 这是一款带有SP3 VM的Win XP。 This runs on a Win XP SP2 VM, is there potentially something in SP3 that would have caused this to occur? 这是在Win XP SP2 VM上运行的,SP3中是否有可能会导致这种情况发生? Or is it just a fact of it being XP Mode? 或者只是它是XP模式的事实?
I got the same error but I solved by using regsvr32.exe in C:\\Windows\\SysWOW64. 我得到了同样的错误,但我通过在C:\\ Windows \\ SysWOW64中使用regsvr32.exe解决了。 Because we use x64 system. 因为我们使用x64系统。 So if your machine is also x64, the ocx/dll must registered also with regsvr32 x64 version 因此,如果您的机器也是x64,则ocx / dll也必须使用regsvr32 x64版本注册
The file msrdo20.dll is missing from the installation. 安装中缺少文件msrdo20.dll。
According to the Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008 and Windows 7 this file should be distributed with the application. 根据Windows Vista,Windows Server 2008和Windows 7上的Visual Basic 6.0支持声明,此文件应随应用程序一起分发。
I'm not sure why it isn't, but my solution is to place the file somewhere on the machine, and register it using regsvr32 in the command line, eg: 我不确定为什么不是,但我的解决方案是将文件放在机器上的某个位置,并在命令行中使用regsvr32注册它,例如:
regsvr32 c:\windows\system32\msrdo20.dll
In an ideal world you would package this up with the redistributable. 在一个理想的世界中,你可以用可再发行的方式打包它。
This download fixed my VB6 EXE and Access 2016 (using ACEDAO.DLL) run-time error 429. Took me 2 long days to get it resolved because there are so many causes of 429. 这个下载修复了我的VB6 EXE和Access 2016(使用ACEDAO.DLL)运行时错误429.我花了两天时间才解决它,因为429有很多原因。
http://www.microsoft.com/en-ca/download/details.aspx?id=13255 http://www.microsoft.com/en-ca/download/details.aspx?id=13255
QUOTE from link: "This download will install a set of components that can be used to facilitate transfer of data between 2010 Microsoft Office System files and non-Microsoft Office applications" 来自链接的QUOTE:“此下载将安装一组可用于促进2010 Microsoft Office System文件和非Microsoft Office应用程序之间的数据传输的组件”
You say it works once you install the VB6 IDE so the problem is likely to be that the components you are trying to use depend on the VB6 runtime being installed. 你说它一旦你安装VB6 IDE就有效,所以问题很可能是你试图使用的组件取决于所安装的VB6运行时。
The VB6 runtime isn't installed on Windows by default. 默认情况下,Windows上未安装VB6运行时。
Installing the IDE is one way to get the runtime. 安装IDE是获取运行时的一种方法。 For non-developer machines, a "redistributable" installer package from Microsoft should be used instead. 对于非开发人员计算机,应使用Microsoft的“可再发行”安装程序包。
Here is one VB6 runtime installer from Microsoft. 这是Microsoft的一个VB6运行时安装程序。 I'm not sure if it will be the right version for your components: 我不确定它是否适合您的组件:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7b9ba261-7a9c-43e7-9117-f673077ffb3c http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7b9ba261-7a9c-43e7-9117-f673077ffb3c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.