Probleme mit WITH

  • Hallo Mitstreiter,

    ich habe eine Routine geschrieben, die Daten aus einer MysQL Datenbank liest. Das Feld das ich im WITH auslesen möchte ist ein Double-Feld.
    Beim Ablauf des Programms bekomme ich folgende Meldung:

    Only Object-type variables allowed in a "With" statement.:

    Der Fehler erscheint bei der Übergabe der DB Daten an eine Scriptvariable: $kurswert = .Fields ("wert").value

    Der Empfangswert wurde vor dem WITH bereits mit einem Numberwert initialisiert.
    $kurswert = Number("0.0")

    Wo liegt der Fehler???


    Func GD($connected, $wkn, $Interval, $bisZeit, $GD)
    ; ------------------------------------------------------------------------------------
    ; Gleitenden Durchschnitt aus dem zurückliegenden Daten eines Zeitpunkts ermitteln
    ;
    ; $wkn Bezugswert
    ; $Interval 10, 30, 60, 120 Min
    ; $bisZeit DoubleWert 20110106000000
    ;
    ;
    ; ------------------------------------------------------------------------------------

    Local $kurswert, $gewichtet

    For $i = 0 To $GD-1

    $MinutesToSub = $i * $Interval * (-1)
    $SelectZeit = _DateAdd("n", $MinutesToSub, $bisZeit)

    $SQLCode = "SELECT zeitpunkt, wert FROM kurse WHERE id_wkn = " & $wkn & " AND zeitpunkt <= " & $SelectZeit & " ORDER By id DESC LIMIT 1"

    $kurswert = Number("0.0")
    ConsoleWrite("$kurswert: " & $kurswert & @CRLF)
    $TableContents = _MySQL_Real_Query($connected, $SQLCode)
    With $TableContents
    IF Not .EOF Then
    ;~ $kurswert = $kurswert + .Fields ("wert").value * ($GD - $i)
    ;~ ConsoleWrite("$kurswert: " & $kurswert & @CRLF)
    ;~ $gewichtet = $gewichtet + ($GD - $i)
    ;~ ConsoleWrite("$gewichtet: " & $gewichtet & @CRLF)
    $kurswert = .Fields ("wert").value
    ; ConsoleWrite("$kurswert: " & $kurswert & @CRLF)

    EndIf
    EndWith

    ConsoleWrite("Ergebnis: " & $kurswert/$gewichtet & @CRLF)
    Return $kurswert/$gewichtet
    Next
    EndFunc

  • Hallo Mitstreiter,

    nur, damit niemand weitere Zeit auf mein Posting verschwendet. Gestern habe ich den Fehler durch Zufall gefunden.

    Im Original wird nicht die Funktion _MySQL_Real_Query benutzt, sondern _Query. Mir war bei einem Test aufgefallen, dass _MySQL_Real_Query gar keinen Rückgabe wert hat. Dementsprechend kann die WITH Schleife nie funktionieren.
    Ich habe anschließend ein Beispiel mit _MySQL_Real_Query gesucht, das dann auch funktioniert hat.

    Gruß Andre