Hallo dige,
Danke für Deine prompte Antwort!
Das selektieren des entsprechenden Zeitraums (z.B. ein bestimmter Tag) ist kein Problem.
Dann bekomme ich aus der DB eine Anzahl von Messwerten. Im Idealfall bekomme ich dann für
24 Stunden beispielsweise alle fünf Minuten einen Wert. Wären dann 288 Werte. Die kann ich
prima in einem Image visualisieren.
Allerdings: Das Messintervall kann variieren. Ist normalerweise 240 Sekunden. Kann aber auch
drunter oder drüber sein. Im Extremfall jede Sekunde. Wären dann 86400 Werte.
Und: Wenn das Tool nicht läuft, dann habe ich zeitweise keine Messwerte = Lücken in den Intervallen.
Wenn ich von obigen Extremfall ausgehen würde, dann müsste ich eine Map (HashTable) mit
86400 Null-Elementen vorbereiten. Dann befülle ich die Map mit den Werten aus der Datenbank
(Key ist in diesem Fall der TimeStamp).
Code: Alles auswählen
NewMap HT()
StartDatum.s = "2011-10-13"
EndDatum.s = "2011-10-14"
StartDateTime = ParseDate("%yyyy-%mm-%dd", StartDatum)
EndDateTime = ParseDate("%yyyy-%mm-%dd", EndDatum)
For Counter = StartDateTime To EndDateTime
HT(Str(Counter))=0
Next
UseSQLiteDatabase()
DB = OpenDatabase(#PB_Any, MyDatabase, "", "", #PB_Database_SQLite)
Debug MapSize(HT())
Define TimeStamp.s
Define Value
Define DatabaseValues
If DatabaseQuery(DB, "Select Value, TimeStamp From Ping Where TimeStamp >= '" + StartDatum + "' And TimeStamp <= '" + EndDatum + "' And IP_Address = '192.168.1.160' Order By TimeStamp")
While NextDatabaseRow(DB)
Value = GetDatabaseLong(DB, 0)
TimeStamp = GetDatabaseString(DB, 1)
HT(Str(ParseDate("%yyyy-%mm-%dd %hh.%ii.%ss", TimeStamp )))= Value
DatabaseValues + 1
Wend
FinishDatabaseQuery(DB)
EndIf
Debug MapSize(HT())
Debug DatabaseValues
Jetzt habe ich ein sekundengenaues Abbild der Messwerte in der Map.
Nun müsste ich die 86400 Werte wieder auf ein darstellbares Maß reduzieren,
damit ich sie in einem Image darstellen kann.
Meines Erachtens ist obige Vorgehensweise -- wie sagt man so schön? -- 'bloated'.
Das muss doch auch eleganter gehen.
Grüße ... Kiffi