_MSSQL_Query von der UDF MSSQL.au3 (von TheLuBu) liefert kein Ergebnis

  • Servus,

    ich bin gerade dabei mein bisheriges Script auf die UDF MSSQL.au3 von TheLuBu umzubauen.

    Der Connect zu den unterschiedlichen DB's geht schon sauber, jedoch bekomme ich bei der Funktion _MSSQL_Query kein Ergebnis zurück.

    Bisher sah das bei mir so aus

    alte Funktion SQL
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <MSSQL.au3>
    #include <Array.au3>

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

    $rs = ObjCreate("ADODB.RecordSet")
    ; ein paar andere Zeilen
    SQL("*", "BEGLEITSCHEIN", "BEGLEITSCHEIN_ID", $Suchbegriff)
    ; ein paar andere Zeilen
    If $rs.RecordCount Then
    Local $Clipboard = ""
    While Not $rs.EOF
    Local $BGSNR = $rs.Fields("BGSNR").value
    Local $BEGLEITSCHEIN_ID = $rs.Fields("BEGLEITSCHEIN_ID").value
    Local $BEARBEITUNGSST = $rs.Fields("BEARBEITUNGSST").value
    ; ein paar andere Zeilen
    Local $Reihe = GUICtrlCreateListViewItem($BGSNR & "|" & $BEGLEITSCHEIN_ID, $listview)
    $rs.MoveNext
    WEnd
    EndIf

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

    Func SQL($SelectStar, $FromWhat, $WhereWhat, $Suchbegriff)
    $SQLErgebnis = $rs.Open("SELECT " & $SelectStar & " FROM " & $FromWhat & " where " & $WhereWhat & " ='" & $Suchbegriff & "';", $sqlCon)
    ConsoleWrite("SELECT " & $SelectStar & " FROM " & $FromWhat & " where " & $WhereWhat & " ='" & $Suchbegriff & "';" & @CRLF)
    Return $SQLErgebnis
    EndFunc ;==>SQL

    [/autoit]


    hiermit wird die Listview bestückt.

    Jetzt will ich das Ganze mit der

    Funktion _MSSQL_Query
    [autoit]


    ;===============================================================================
    ;
    ; Function Name....: _MSSQL_Query
    ; Description......: Send a Query to the Database
    ; Syntax...........: _MSSQL_Query($iSQLCon, $iQuery)
    ; Parameter(s).....: $iSQLCon = $oConnectionObj = Object, returned by _MSSQL_Con
    ; $iQuery = MSSQL Query
    ; Return Value(s)..: Success - Returns the Response from the server
    ;
    ;===============================================================================
    Func _MSSQL_Query($iSQLCon, $iQuery)
    If IsObj($iSQLCon) Then
    Return $iSQLCon.execute($iQuery)
    EndIf
    EndFunc ;==>_MSSQL_Query

    [/autoit]


    behandeln, aber irgenwie komme ich nicht weiter

    [autoit]


    Local $BGSTest = _MSSQL_Query($sqlCon, "SELECT * FROM BEGLEITSCHEIN where BEGLEITSCHEIN_ID ='123';")
    ConsoleWrite("$BGSTest = " & $BGSTest & @CRLF)
    _ArrayDisplay($BGSTest, "Mein BGS", Default, 1)

    [/autoit]

    Beim Consolewrite bekomme ich "$BGSTest = " raus, also nix ?(

    Der einzige Unterschied, der mir bisher aufgefallen ist, ist das ich in der alten Funktion einen $rs.open Aufruf hatte und in der _MSSQL_Query ein $iSQLCon.execute($iQuery) verwendet wird. Hat das damit eventuell was zu tun, oder behandle ich das Array falsch ?

    Gruss und Danke

  • Ich glaube eine Lösung gefunden zu haben, zumindest erhalte ich ein Ergebnis

    [autoit]


    Global $BGSTest = _MSSQL_Query($sqlCon, "select b.bgsnr as Begleitscheinnummer, b.begleitschein_id as BegleitscheinID, t.behoerdliche_nummer as BehördlicheNummer, t.NAME as Firmenname, tr.KUERZEL as Rolle from begleitschein b left join teilnehmer t on b.teilnehmer_id = t.teilnehmer_id left join teilnehmerrolle tr on t.teilnehmerrolle_id = tr.teilnehmerrolle_id where b.bgsnr = '19313300026234';")
    $array = $BGSTest.GetRows
    If Not IsArray($array) Then
    MsgBox(0, 'Array', 'kein Ergebnis')
    Exit
    EndIf
    _ArrayDisplay($array, 'Alle Spalten',"","","","","1|2|3|4|5|6|7|8|9|10")

    [/autoit]
  • Für einfache selects hat er doch extra diese Funktion vorgesehen:

    [autoit]


    Func _MSSQL_GetRecord($oConnectionObj, $sTable, $Columns = "*", $condition = "", $order = "")

    [/autoit]

    Die gibt dir dann auch gleich ein Array mit allen Ergebnissen des Querys zurück. Letzlich macht die Funktion so ziemlich das selbe wie du nun von hand.

    Die Funktion _MSSQL_Query() ist eher für andere SQL Befehle gedacht, wie z.B. aufwendigere und verschachtelte Select Anfragen, der Aufruf oder die Erstellung einer stored function, create view, oder auch um Berechtigungen zu setzen. Eben alles was man mit den anderen bereitgestellten Funktionen der UDF nicht tun kann.

    Einmal editiert, zuletzt von misterspeed (3. Juni 2013 um 20:07)