我做了个软件,打包后安装在其他电脑上,一启动就发生“类不支持自动化或不支持期望的接口 431”错误,我引用的是MIcrosoft ActiveX Data 2.5 Library, 后来改用MIcrosoft ActiveX Data 2.8 Library 后就正常了
。过了几天,又把那个软件安装在其他电脑上,有发生“类不支持自动化或不支持期望的接口 431”错误,这时我改引用MIcrosoft ActiveX Data 2.5 Library, 这才正常。
我就纳闷了,为什么同样的软件在不同的电脑里发生两种情况:一个是支持MIcrosoft ActiveX Data 2.5 Library,而另一个支持MIcrosoft ActiveX Data 2.8 Library 。
我所使用的数据库连接方法是:
    Dim connectionstring As String
    connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=manager;Data Source = " + App.Path + "\data.mdb"
    Cn.Open connectionstring
    Cn.Close
请高手指点指点,如何做,才能把软件做得一次性稳定,如此调来调去真麻烦

解决方案 »

  1.   

    那你可以使用自动化代替引用。Set conn = CreateObject("ADODB.Connection")
    ...
      

  2.   

    在出错的机器上安装MDAC2.8MDACTYP.EXE试试
      

  3.   

    你的 Cn 应该定义成 Object 类型,如:
    Dim Cn As Object
    然后需要初始化,比如你原来的是用 New 初始化的,如:
    Dim Cn As New Connection
    现在应为定义成 Dim Cn As Object 所以初始化过程变成
    Set Cn = CreateObject("ADODB.Connection")
    这个过程可以放到Load 事件里,如:Dim Cn As Object    ' 定义连接对象
    Private Sub Form_Load()
        Set Cn = CreateObject("ADODB.Connection")
        Cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=manager;Data Source = " + App.Path + "\data.mdb"
        ' 定义数据集对像
        Dim rs As Object
        Dim count As Long
        Set rs = CreateObject("ADODB.Recordset")
        rs.open "select count(*) as c from 表", Cn, 3, 1
        count = rs!c
        rs.Close
        Set rs = Nothing
        MsgBox "查询表的记录数为:" & count
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Cn.Close
        Set Cn = Nothing
    End Sub
      

  4.   

    你用来编译的机器是什么操作系统?找一台确认没有问题的机器,将 C:\Program Files\Common Files\System\ado 的内容覆盖你机器上对应路径的文件。另外,最好的低版本的 Windows 下打包,安装时保留高版本系统文件。