Microsoft Access 2007和2010:“运行时错误'429':ActiveX组件无法创建对象”

时间:2011-07-06 19:49:02

标签: ms-access activex access-vba xmlhttprequest

我正在尝试修复从Access 97格式导入到Access 2007格式(.mdb到.accdb)的Microsoft Access数据库。导入成功,我能够从我的机器上使数据库完全正常运行。它也完全可以从我的同事的机器上运行。但是,当被带到属于我们组织的另一个建筑物时,我们无法运行数据库。我们知道问题的一部分在于打开与包含中央数据库的Web服务器的连接(此Access数据库的多个副本由相同的代码组成,但不同的数据输入到它们中并上载到此中央数据库)。这是代码。

Public Function updateSqlServer(TransType As String, SqlCommand As Variant) As Boolean


    Dim xmldom As New MSXML2.DOMDocument40
    Dim xmlhttp As New MSXML2.ServerXMLHTTP40

    Const SoapServer = "http://www.example.com/webservice.asp"

   'setup the XMLHTTP object and POST envelope to SoapServer
    toResolve = 5 * 1000
    toConnect = 5 * 1000
    toSend = 15 * 1000
    toReceive = 15 * 1000

    xmlhttp.setTimeouts toResolve, toConnect, toSend, toReceive
    xmlhttp.Open "POST", SoapServer, False  'YIELDS Run-Time Error 429 on this line: xmlhttp.Open
    xmlhttp.setRequestHeader "Man", POST & " " & SoapServer & " HTTP/1.1"
    xmlhttp.setRequestHeader "MessageType", "CALL"
    xmlhttp.setRequestHeader "Content-Type", "text/xml"

    xmlhttp.send (SoapEnvelope)

   'synchronous wait for response; HTTP status other than 200 (OK) is an error
    If xmlhttp.Status = 200 Then
        Set xmldom = xmlhttp.responseXML 'get response into XML DOM document
        Debug.Print (xmldom.xml)         'write soap response to screen
        updateSqlServer = True
    Else
        'handle error
        Debug.Print ("Didn't Work")
        Debug.Print ("status=" & xmlhttp.Status) 'write soap return code
        Debug.Print ("" & xmlhttp.statusText)    'write status text
        updateSqlServer = False
    End If

    Set xmlhttp = Nothing
    Set xmldom = Nothing


End Function

我们试图解决这个问题的事情: 1.添加了所有必要的引用(例如Microsoft XML) 2.编辑文件和文件夹的权限 3.注册ActiveX控件 4.确保所有可更改的选项都适用于工作和非工作机器

这个旧的并不是我的代码或设计。我只需要解决它。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

我的一位同事想出了答案。这些变量是 MSXML4 的对象,Windows 7带有 MSXML 6.0 ,显然与MSXML 4不兼容。

请务必先检查安装包

您可以安装 MSXML 4 或通过以下方式将变量更改为MSXML 6

Dim xmldom As New MSXML2.DOMDocument6.0

而不是

Dim xmldom As New MSXML2.DOMDocument40