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