Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TDBChart: zwei Werte aus Datenbank als X-Source (https://www.delphipraxis.net/205674-tdbchart-zwei-werte-aus-datenbank-als-x-source.html)

Helmi 5. Okt 2020 10:07

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:
  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;
Wie man sehen kann, ist für X als Source "Uhrzeit" angegeben.
Ich hätte aber gerne dort "Datum" und "Uhrzeit".

Wie kann ich dies koppeln?

LoZe 5. Okt 2020 11:24

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

Helmi 6. Okt 2020 13:41

AW: TDBChart: zwei Werte aus Datenbank als X-Source
 
Zitat:

Zitat von LoZe (Beitrag 1474877)
Hallo,
kannst du in der Datenbankabfrage nicht Datum und Uhrzeit zusammenfügen?
dann hättest du einen DateTime Wert

mmh - ich weiß leider nur nicht wie

stifflersmom 6. Okt 2020 13:57

AW: TDBChart: zwei Werte aus Datenbank als X-Source
 
vielleicht ein concat?

Code:
select concat(Uhrzeitspalte,' ',Datumspalte) as Zeitpunktspalte from tabelle

LoZe 7. Okt 2020 10:57

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

Helmi 15. Okt 2020 17:39

AW: TDBChart: zwei Werte aus Datenbank als X-Source
 
Wie verbind ich diese Select-Abfragen mit meiner schon vorhandenen Abfrage?

stifflersmom 15. Okt 2020 18:21

AW: TDBChart: zwei Werte aus Datenbank als X-Source
 
Zeig doch mal Deine bestehende Abfrage, dann wird bestimmt der ein oder andere Vorschlag kommen

Helmi 15. Okt 2020 18:30

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;

stifflersmom 15. Okt 2020 18:37

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';

mkinzler 15. Okt 2020 20:28

AW: TDBChart: zwei Werte aus Datenbank als X-Source
 
Oder besser

SQL-Code:
SELECT
  ID, DATUM, UHRZEIT, DATUM+UHRZEIT as DatumUhrzeit, TEMPSENSOR_1, FEUCHTESENSOR_1 
FROM
  Wetterdaten;
Dann hat das Feld den richtigen Typ. Bei einem String (Concat oder ||) hättest Du dann auch ein falsches Datum-/Zeitformat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz