Microsoft Access 2007 и 2010: «Ошибка во время выполнения« 429 »: компонент ActiveX не может создать объект» - PullRequest
2 голосов
/ 06 июля 2011

Я пытаюсь исправить базу данных Microsoft Access, которая была импортирована из формата Access 97 в формат Access 2007 (.mdb в .accdb). Импорт был успешным, и я смог сделать базу данных полностью функциональной с моей машины. Это также полностью функционально от машины моего коллеги. Однако, когда мы переместимся в другое здание, которое является частью нашей организации, мы не сможем запустить базу данных. Мы знаем, что часть проблемы заключается в открытии соединения с веб-сервером, который содержит центральную базу данных (есть несколько копий этой базы данных 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 Ответ

3 голосов
/ 07 июля 2011

Мой коллега понял ответ.Эти переменные являются объектами 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
...