Prozedur in MS Access rufen

  • Hallo,

    Habe in einer MS Access DB ein Modul angelegt, nennen wir es MyModule, und darin eine Prozedur geschrieben

    Public Sub MyProcedure()
    ..
    End Sub

    Hat jemand Erfahrung wie man diese Prozedur via AutoIt rufen könnte?
    Habe es mal wie folgt probiert, aber es kommt immer nur der allgemeine Fehler 80020009 zurück (falsche Parameter etc.)

    [autoit]


    $oConn = ObjCreate("ADODB.CONNECTION")
    $oConn.Open('Driver={Microsoft Access Driver (*.mdb)}; DBQ=' & $sADB & ';')
    $oConn.Call "MyProcedure"

    [/autoit]

    Datenbank-Verbindung via AutoIt funktioniert.
    Wenn das Modul in Access gestartet wird, geht es auch.
    Es scheint also an der Art des Aufrufes zu liegen.
    In der Prozedur selbst wird ein Sack von Aktualisierungsabfragen gerufen, um leere Felder mit Schlagworten zu aktualisieren.
    Da der Datenimport via Autoit selbst schon funktioniert, wäre der abschließende Aufruf der Prozedur das Sahnehäubchen auf mein Skript.

    Vielen Dank im Voraus.

    Einmal editiert, zuletzt von Don (7. Januar 2014 um 17:52)

  • Ich habe das wie folgt gelöst:

    [autoit]


    Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
    Local $FilePath = "C:\***.accde"

    [/autoit][autoit][/autoit][autoit]

    $oAccess = ObjGet($FilePath, "Access.Application")
    If @error Then
    MsgBox(0, "Error", "Error" & Hex(@error, 8))
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $oAccess.run("MyProcedure")

    [/autoit][autoit][/autoit][autoit]

    Func _ErrFunc($oError)

    [/autoit][autoit][/autoit][autoit]

    $error= "err.number ist: " & @TAB & $oError.number & @CRLF & _
    "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
    "err.description ist: " & @TAB & $oError.description & @CRLF & _
    "err.source ist: " & @TAB & $oError.source & @CRLF & _
    "err.helpfile ist: " & @TAB & $oError.helpfile & @CRLF & _
    "err.helpcontext ist: " & @TAB & $oError.helpcontext & @CRLF & _
    "err.lastdllerror ist: " & @TAB & $oError.lastdllerror & @CRLF & _
    "err.scriptline ist: " & @TAB & $oError.scriptline & @CRLF & _
    "err.retcode ist: " & @TAB & $oError.retcode & @CRLF & @CRLF

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite($error)

    [/autoit][autoit][/autoit][autoit]

    EndFunc ;==>_ErrFunc

    [/autoit][autoit][/autoit][autoit][/autoit]