SQL Command - Execute Befehl gibt Fehlermeldung zurück!

  • Hallo Community,


    beschäftige mich jetzt "schon" seit 2 Monaten mit AutoIt und komme immer besser rein. Bis jetzt war Google bzw. die SuFu hier immer eine alles beantwortende Hilfe, aber jetzt komm ich einfach nicht weiter.

    Brauche also eure Hilfe :)

    Problem:

    Bei meinem untenstehenden Code, läuft meiner Meinung nach Alles glatt. Nur beim "execute" scheint er Probleme zu haben und gibt mir die Fehlermeldung: "The requested action with this object has failed"

    Hier mein Code. Wie gesagt, der Datenbank Connect scheint zu funktionieren. Hier natürlich meine Daten durch "***" ersetzt, also nicht wundern..


    Spoiler anzeigen
    [autoit]

    $sDBName = "***"
    $sUser = "***"
    $sPass = "***"
    $sSelect = "Select * From DUAL"
    MsgBox(0, "Test", $sSelect)
    Global $oConn = ObjCreate( "ADODB.Connection" )
    Global $DSN = "Provider=MSDAORA;Data Source=" & $sDBName & ";User Id=" & $sUser & ";Password=" & $sPass
    MsgBox(0, "Test", $DSN)
    $oConn.Open($DSN)
    Global $oRs = ObjCreate( "ADODB.command" )
    $oRs.commandtype = 1
    $oRs.execute $sSelect

    [/autoit]

    Hier noch eine Errormeldung, die mir meine Error-Funktion zurückgibt:

    Bild einbinden klappt irgendwie nicht. Hier der Link: http://s14.directupload.net/file/d/3104/cm2z8kme_jpg.htm

    Einmal editiert, zuletzt von PC-Unwissender (14. Dezember 2012 um 10:44)

  • Hi, versuch am Ende mal:

    [autoit]

    msgbox(0,"",$oRs.execute($sSelect))

    [/autoit]

    Da solltest du eigentlich das Ergebnis vom Query angezeigt bekommen.

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • So, danke für deine Antwort. Hatte übers Wochenende keine Zeit zu antworten.

    Habe jetzt zwei Varianten:

    a)

    (in der Datei aus der er die SQL Anweisung zieht steht "SELECT * FROM DUAL")

    Spoiler anzeigen
    [autoit]

    $sDBName = ***
    $sUser = ***
    $sPass = ***
    $file_hwnd = FileOpen(Guictrlread($input4))
    $file = FileRead($file_hwnd)
    MsgBox(0, "Test", $file)
    Global $oConn = ObjCreate("ADODB.Connection")
    Global $DSN = "Provider=MSDAORA;Data Source=" & $sDBName & ";User Id=" & $sUser & ";Password=" & $sPass
    MsgBox(0, "Test", $DSN)
    $oConn.Open($DSN)
    Global $oRs = ObjCreate( "ADODB.RecordSet" )
    $oRs.Open($file, $oConn)
    FileClose($file_hwnd)

    [/autoit]

    Der Teil klappt auch. Es wird mir "DUMMY" ausgegeben. Problem ist nur, dass wenn meine SQL Anweisung komplizierter als ein Select wird, auf einmal nichts mehr geht. Schätzungsweise liegt das am RecordSet. Heißt aber natürlich zumindest, dass der Code an sich funktioniert. (Zum Glück...)

    b)

    Habe es dann (wie schon in Beitrag 1 gepostet) mit einem Command versucht. Das wollte er aber ja eben auch nicht. Habe dann ein bisschen dran rumgeschraubt und jetzt sieht der Ciode so aus:

    Spoiler anzeigen
    [autoit]

    $sDBName = ***
    $sUser = ***
    $sPass = ***
    $file_hwnd = FileOpen(Guictrlread($input4))
    $file = FileRead($file_hwnd)
    MsgBox(0, "Test", $file)
    Global $oConn = ObjCreate("ADODB.Connection")
    Global $DSN = "Provider=MSDAORA;Data Source=" & $sDBName & ";User Id=" & $sUser & ";Password=" & $sPass
    ;MsgBox(0, "Test", $DSN)
    $oConn.Open($DSN)
    Global $oRs = ObjCreate( "ADODB.Command" )
    msgbox(0,"",$oRs.execute($file))
    $oRs.ActiveConnection=$oConn
    $oRs.commandtype = 1
    $oRs.execute ($file)

    [/autoit]


    Die Messagebox aus deiner Codezeile gibt mir nur eine leere Messagebox aus. Die Datei ist aber sicher gefüllt und der FileOpen klappt sicher auch, da er ja beim RecordSet genau der selbe ist.

    Fehlercode: "Für das Befehlsobjekt wurde kein Befehlstext festgelegt"

    Hast du noch eine Idee? Oder jemand anderes?

    2 Mal editiert, zuletzt von PC-Unwissender (17. Dezember 2012 um 09:49)