![]() |
TDBChart: zwei Werte aus Datenbank als X-Source
Hallo Gemeinde,
ich hab folgendes Problem: In einer Datenbank werden mehrere Temperatur und Feuchtigkeitswerte gespeichert. Dazu wird bei jedem Hinzufügen eines Datensatzes die Uhrzeit und das Datum in jeweils ein eigenes Feld geschrieben. Die Werte der Datenbank werden in einem TDBChart in zwei Graphen angezeigt (als Y-Wert). Als X-Wert aktuell nur die Uhrzeit. Hier mal der Code für einen Graph:
Delphi-Quellcode:
Wie man sehen kann, ist für X als Source "Uhrzeit" angegeben.
Graph_Feuchte_1 := TLineSeries.Create(DBChart_Filter);
Graph_Feuchte_1.ParentChart := DBChart_Filter; Graph_Feuchte_1.DataSource := DataModule_DB.ZQuery; Graph_Feuchte_1.Name := 'Feuchte_1'; Graph_Feuchte_1.Title := 'Feuchte 1'; Graph_Feuchte_1.XLabelsSource := 'Uhrzeit'; Graph_Feuchte_1.YValues.ValueSource := 'FeuchteSensor_1'; Graph_Feuchte_1.VertAxis := aRightAxis; Graph_Feuchte_1.ShowInLegend := false; Graph_Feuchte_1.Color := clBlue; Graph_Feuchte_1.Tag := 2; Ich hätte aber gerne dort "Datum" und "Uhrzeit". Wie kann ich dies koppeln? |
AW: TDBChart: zwei Werte aus Datenbank als X-Source
Hallo,
kannst du in der Datenbankabfrage nicht Datum und Uhrzeit zusammenfügen? dann hättest du einen DateTime Wert |
AW: TDBChart: zwei Werte aus Datenbank als X-Source
Zitat:
|
AW: TDBChart: zwei Werte aus Datenbank als X-Source
vielleicht ein concat?
Code:
select concat(Uhrzeitspalte,' ',Datumspalte) as Zeitpunktspalte from tabelle
|
AW: TDBChart: zwei Werte aus Datenbank als X-Source
so evtl.
Delphi-Quellcode:
SELECT CAST(Datumspalte AS DATETIME) + CAST(Uhrzeitspalte AS DATETIME) as DatumMitUhrzeit, FeuchteSensor_1 FROM tabellenname
|
AW: TDBChart: zwei Werte aus Datenbank als X-Source
Wie verbind ich diese Select-Abfragen mit meiner schon vorhandenen Abfrage?
|
AW: TDBChart: zwei Werte aus Datenbank als X-Source
Zeig doch mal Deine bestehende Abfrage, dann wird bestimmt der ein oder andere Vorschlag kommen
|
AW: TDBChart: zwei Werte aus Datenbank als X-Source
Hier mal mein Code:
Delphi-Quellcode:
DataModule_DB.ZQuery.SQL.Clear;
DataModule_DB.ZQuery.SQL.Add('SELECT ID, DATUM, UHRZEIT, TEMPSENSOR_1, FEUCHTESENSOR_1 FROM Wetterdaten'); If not alle_Datensaetze then begin DataModule_DB.ZQuery.SQL.Add('WHERE DATUM = :Date AND UHRZEIT BETWEEN :Time_min AND :Time_max'); DataModule_DB.ZQuery.SQL.Add('ORDER BY UHRZEIT'); end else DataModule_DB.ZQuery.SQL.Add('ORDER BY DATUM'); //Parameter If not alle_Datensaetze then begin DataModule_DB.ZQuery.ParamByName('Date').AsDate := Datum; DataModule_DB.ZQuery.ParamByName('Time_min').AsTime := Uhrzeit_min; DataModule_DB.ZQuery.ParamByName('Time_max').AsTime := Uhrzeit_max; end; DataModule_DB.ZQuery.Open; |
AW: TDBChart: zwei Werte aus Datenbank als X-Source
Versuchs mal so:
Delphi-Quellcode:
DataModule_DB.ZQuery.SQL.Clear;
DataModule_DB.ZQuery.SQL.Add('SELECT ID, DATUM, UHRZEIT, CONCAT(DATUM,' ',UHRZEIT) as DatumUhrzeit, TEMPSENSOR_1, FEUCHTESENSOR_1 FROM Wetterdaten');
Code:
Graph_Feuchte_1.XLabelsSource := 'DatumUhrzeit';
|
AW: TDBChart: zwei Werte aus Datenbank als X-Source
Oder besser
SQL-Code:
Dann hat das Feld den richtigen Typ. Bei einem String (Concat oder ||) hättest Du dann auch ein falsches Datum-/Zeitformat.
SELECT
ID, DATUM, UHRZEIT, DATUM+UHRZEIT as DatumUhrzeit, TEMPSENSOR_1, FEUCHTESENSOR_1 FROM Wetterdaten; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz