Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi TDBTeeChart, Pie-Serie, Gruppierungen (https://www.delphipraxis.net/59495-tdbteechart-pie-serie-gruppierungen.html)

AirJordan 23. Dez 2005 09:23


TDBTeeChart, Pie-Serie, Gruppierungen
 
Hallo,

im Moment habe ich mehrere Baustellen zu bearbeiten und eine davon ist die DBTeeChart. Ich
komme dort nicht so richtig weiter.

Was möchte ich:

Ich möchte mehrere Pie-Charts auf einer Seite (Lösung über mehrere Serien als Pie). In der Daten-
bank gibt es zwei Felder die ausgewertet werden sollen. In dem einen Feld wird ein Zustand abge-
bildet (also zu hoch, zu niedrig und normal). In dem zweiten Feld wird der Zeitpunkt des Zustandes
abgebildet. (also morgens, mittags, abends)

Jetzt möchte ich zb drei Pie-Charts (morgens, mittags, abends) und dort möchte ich den Anteil
der Zustände (zu hoch, zu niedrig, normal) als prozentuale Auswertung.

In der Datenquelle beim DBTreeChart kann ich zwar mit Anzahl auf das Feld des Zustandes er-
mitteln, wie oft zuhoch, zu niedrig etc vorkommt, aber es bezieht sich immer auf alle Daten-
sätze und nicht nur auf die morgens, mittags oder abends. :roll:

Wo kann ich das einstellen, das für die jeweilige Serie sozusagen per Filter oä nur bestimmte
Datensätze ausgewertet werden??? :gruebel:

Schon mal Danke für eure Hinweise und merry X-mas :wink:

AirJordan 23. Dez 2005 09:26

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
Ohh Mi... :oops: Falsche Rubrik. Kann einer der Mods. das mal in VCL verschieben. :oops:
Danke.

Hansa 23. Dez 2005 10:28

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
Das gehört auch nicht nach VCL sondern bei Datenbanken, denn bei Dir ist die Ermittlung der richtigen Daten noch nicht richtig. Desweiteren wäre wichtig zu wisssen, wie festgestellt wird, was morgens, mittags, abends ist, ein Aufzählungstyp oder wird das über die Uhrzeit ermittelt ? Aber egal wie, Du mußt das mit WHERE eingrenzen. Hoffentlich benutzt er SQL. 8)

AirJordan 23. Dez 2005 10:40

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
Nicht ganz. Also dass das in den Datenbanksektor gehört ist ok. Aber die Datenquelle
der gesamten Chartgrafik (also aller drei Pie-Charts) ist ja eine Datenbank! Wenn ich
also mit SQL oder Filteranweisungen zb nur die Werte für abends ziehen würde, wären ja
auch die Pie-Charts für morgens und mittags im A..Eimer. :zwinker:

Der Bereich, also zu hoch, zu niedrig und normal ist ein Wordfield. Der Tagesbereich,
also morgens, mittags, abends ist ein Stringfield (Länge 2).

Meiner Meinung nach müsste ich in der jeweilgen Serie (Pie Chart morgens etc) in der
Datenquelle eine Selektion durchführen können. So wie jetzt auch schon eine Function
Anzahl über das Feld Bereich laufen lasse. Das habe ich bei dem DBTreeChart aber noch
nicht gefunden. :|

Hansa 23. Dez 2005 10:52

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
Zitat:

Zitat von AirJordan
Meiner Meinung nach müsste ich in der jeweilgen Serie (Pie Chart morgens etc) in der Datenquelle eine Selektion durchführen können. So wie jetzt auch schon eine Function
Anzahl über das Feld Bereich laufen lasse. Das habe ich bei dem DBTreeChart aber noch
nicht gefunden. :|

Das wirst Du dort auch so nicht finden, denn das hängt von Deinem Dataset ab. Und jetzt sage auch endlich welche DB benutzt wird. 8) In diesem Zusammenhang stellt sich auch die Frage, ob sich die Daten in der DB 1:1 über ein DBChart abbilden lassen, oder ob wie so oft eine nicht-DB Komponente besser wäre. Das nächste ist, warum Du mit Fields hantierst und dazu noch mit einem Stringfield :shock: für morgens etc. Du wirst doch nicht etwa "mittags" im Klartext in die DB schreiben ? :shock:

AirJordan 23. Dez 2005 13:08

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die DB ist Absolute Database, ist also SQL fähig. :lol: In dem Field stehen Kürzel, die
vorher schon errechnet werden, für die Tageszeit. Das ist denke ich, für diese Sache aber
mehr als uninteressant. Mit anderen Worten, du denkst, für jede Pie-chart Grafik eine
eigene SQL-Abfrage?

Beispiel siehe Anhang. So oder ähnlich soll das später aussehen. :roll:

Hansa 23. Dez 2005 20:59

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
Zitat:

Zitat von AirJordan
:lol: In dem Field stehen Kürzel, die vorher schon errechnet werden, für die Tageszeit. Das ist denke ich, für diese Sache aber mehr als uninteressant.

Was ist denn mehr als uninteressant ? Die Frage an sich ? :lol: Wie werden die Felder denn "errechnet" ? Wie sehen die SQL-Statements aus ? Wie ist der Zugriff auf die DB geregelt ? So hat das alles keinen Sinn.

AirJordan 23. Dez 2005 22:11

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
Die Felder werden z.B. errechnet, wenn in der Datenbank neue Werte eingegeben werden. Genauer gesagt, wenn man
einen Messwert mit Datum und Uhrzeit eingibt, wird parallel eingetragen, ob es sich um einen hohen oder niedrigen
Wert handelt und ob er am Vormittag oder Nachmittag oder gar in der Nacht gemessen wurde. Nichts besonders. Für
mich war nur wichtig, das die Zuordnungen fest in der DB stehen.

Der Zugriff auf die Felder erfolgt über DevExpress Editoren und Grids. Die Datenbank ist Absolute Database und die
Charts sind (leider) TreeChart´s. :wink:

Ich habe mich jetzt entschieden, die einzelnen Zeitblöcke mit einem SQL Statement aus der Datenbank auszulesen und
die Datasources mit den jeweiligen Pie-Serien zu verbinden.

AirJordan 30. Dez 2005 09:23

Re: TDBTeeChart, Pie-Serie, Gruppierungen
 
So, habe mich in diesem Problem durch Doku, andere Foren etc durchgebissen und
habe eine Lösung für mich gefunden. :wink:

Sieht dann, leicht gekürzt, etwa so aus:

Delphi-Quellcode:
for i_Serie := 0 to cxBZ_WertePie.CountActiveSeries - 1 do
  begin
    with cxBZ_WertePie do
    begin
      case i_Serie of
       0 : i_KurzText := 'GS'; { Gesamt }
      (..)
      end;

      { der erste Werteblock }
      if SeriesList[i_Serie].XLabel[0] = '0' then
      begin
        SeriesList[i_Serie].XLabel[0] := i_KurzText+' zu niedrig';
        SeriesList[i_Serie].ValueColor[0] := cxStyleLow.Color;
      end;
      (..)

      { und alles Neuzeichnen }
      SeriesList[i_Serie].Repaint;
    end;
  end;
Am Ende der gesamte Routine stand noch ein RefreshData auf die gesamte Grafik. Das habe
ich entfernt, weil dann immer wieder der Zustand hergestellt wurde, den ich in der IDE
beim Erstellen der uswertung eingegeben hatte. :x Das scheint mir aber auch nicht ganz
ohne Fehler zu sein, aber egal so klappt es bei mir. Und nur das zählt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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