SQL-Datenbank: variable must be of type "object" - Fehler

  • Hallo zusammen

    Ich krieg die Krätze. Muss ein Tool umschreiben, damit es via SQL Abfrage auf eine Datenbank zugreift.

    Nun, ich habe weder Ahnung von SQL und in AutoIT bin ich auch nicht die hellste Kerze auf dem Kuchen.

    Ich habe mir Microsoft SQL Server Studio 2012 installiert, und mal etwas herumgespielt. Dabei eine kleine Datenbank erstellt. Insofern begreif ich jetzt mal wenigstens n paar SQL Statements.

    Aber dann kam AutoIT... *lol*...

    Folgendes habe ich gefunden:


    Joa und wenn ich das Teil jetzt laufen lasse erhalte ich eine Fehlermeldung:

    "C:\AutoIT\IPchecker\IPChecker 5.0\readsql.au3" (12) : ==> Variable must be of type "Object".:
    $ergebnis = ($query.Fields("Vorname" ).Value)
    $ergebnis = ($query^ ERROR


    Hat da jemand Ahnung davon? Wär wirklich spitze wenn Ihr mir da weiter helfen könntet....

    Mit liebem Gruss vonner Kleinkerze Floh

  • Der Fehler ist, dass $query kein Objekt ist. Das ist nur der Fall, wenn (siehe MSDN - MicroSoft Developer Network:(
    Using the Execute method on a Connection Object (ADO) object executes whatever query you pass to the method in the CommandText argument on the specified connection. If the CommandText argument specifies a row-returning query, any results that the execution generates are stored in a new Recordset object. If the command is not intended to return results (for example, an SQL UPDATE query) the provider returns Nothing as long as the option adExecuteNoRecords is specified; otherwise Execute returns a closed Recordset.

    Also solltest du prüfen, ob der Befehl, den du Ausführst, richtig ist (So sieht er für mich aus), oder ob beim verbinden etwas schiefgeht. Dass kann ich dir so nicht sagen :)

  • Hab grad noch das hier bei Open() gefunden:
    Remote Data Service Usage When used on a client-side Connection object, the Open method doesn't actually establish a connection to the server until a Recordset is opened on the Connection object.
    Vielleicht geht das deshalb auch nicht. Ansonsten bin ich mir bei den Parametern beim öffnen auch nicht ganz sicher...

  • Also ich hab nach der Open-Zeile ne @error abfrage reingetan. ->Er kann keine Verbindung herstellen. *schnaub*...

    Shit, ich steh sowas von am Berg... *schwitz*:..

  • Joa... der mit dem Record Set war gut... hab schlussendlich n Code-Schnipsel gefunden der mir das näher gebracht hat.

    Und jetzt kann ich zum ersten Mal mit AutoIT ne SQL Datenbank lesen und sogar das Gelesene anzeigen. *stolzbin*.

    Hier gefunden: https://www.autoitscript.com/wiki/ADO_Example_TextFile

    Man muss nur noch den ConnectionString SQL Server mässig hinfriemeln und schon klappts... *love*.

    Danke für Eure Hilfe, Ihr seid - wie immer - super klasse.

    Lieber Gruss

    Flo

  • hier auch mal ein Beispiel

    [autoit]


    #include <sql_udf.au3>

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

    $string = ""$wert = ""_sql_read_data()
    $string = StringSplit($string, "|")
    MsgBox(0,"", $string[1])

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

    Func _sql_read_data()
    $sserver = "SQLServer" $susername = "User" $spassword = "Pass"
    $sdatabase = "Datenbank"
    $sql = _sqlcon($sserver, $susername, $spassword, $sdatabase)
    $query = "SELECT * FROM Tabelle WHERE(Feldxy = 23046) ORDER BY DATUM DESC"
    $var = _sqlquery($sql, $query)
    With $var While NOT .eof
    $wert = .fields("Feldxy").value .movenext
    $string &= StringStripWS($wert, 8) & "|"
    WEnd
    EndWith
    _sqlend($sql)
    EndFunc

    [/autoit]

    Gruß gmmg