Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Frage zu DbChart (https://www.delphipraxis.net/12016-frage-zu-dbchart.html)

trialfreak 18. Nov 2003 20:12


Frage zu DbChart
 
Hallo!

Ich schreibe eine Anwendung in der ich u.a. eine graphische Statistik erstelle deren Werte aus einer Datenbank stammen.

Ich habe diese Statistik mit 2 DbCharts realisiert - eins für eine allgemeine Statistik (alle Standorte) und das andere für eine standortbezogene Statistik.
(Damit soll man einzelne Tendenzen in den Standorten im Vergleich zu allen zusammen erkennen)

Unter anderem sollen diese Charts je nach Auswahl eine Balken-Auswertung über bearbeitete Projekte in den einzelnen Jahren beinhalten.

Beide DBCharts (bzw. das Balkendiagramm) werden über 2 getrennte Queries "gefüttert" (einmal für allgemein und einmal für den Standort).

Nun zum Problem:

In der allgemeinen Statistik gibt es z.B. Projekte ab dem Jahr 1996. Bis 2003 ergibt das also 8 Balken unterschiedlicher Größe.

Ein einzelner Standort besitzt nun z.B. nur Projekte in den Jahren 1999,2000,2001,2002,2003.

Wie kann ich erreichen dass die Balken der entsprechenden Jahre untereinander angezeigt werden?
(Die Charts sind untereinander platziert)


Hoffe ihr könnt mir helfen, das Lesen hier macht jedenfalls immer schon sehr schlau ( :dp: )

Nun wart' ich auf eure Antworten :)

Christian

Beg 19. Nov 2003 11:08

Re: Frage zu DbChart
 
Hallo,

du könntest eine temporäre Tabelle erstellen:


Jahr / Standort1 / Standort2
1996 / 22 / 0
..
1999 / 13 / 11
..

somit könntest du auch alle in einem Chart darstellen.

Gruß
BeG

trialfreak 19. Nov 2003 16:18

Re: Frage zu DbChart
 
:wiejetzt:

Ich möchte ja weiterhin 2 verschiedene Charts haben, will nur dass beide gleich viele Balken haben. (nur dass man die mit Wert 0 eh nicht sieht...)
DbChart1 und Dbchart2 sollen gleich viele Balken haben damit die entsprechenden Jahre untereinander sind.

Christian

Beg 19. Nov 2003 18:16

Re: Frage zu DbChart
 
Kannst du ja!
Brauchst ja nur eine Datenquelle!
Du weist dem X Wert das Jahr zu und Standort1 als y.
Das gleiche mit dem 2. Chart.

Gruß Beg

trialfreak 20. Nov 2003 11:16

Re: Frage zu DbChart
 
Mhh also ich versteh irgendwie nicht wie du das meinst...


Bsp. für allgemein

SQL-Code:
SELECT jahr AS 'Info', count(*) AS 'Anzahl' from beitrag group by jahr
und standortbezogen:

SQL-Code:
SELECT jahr AS 'Info', count(*) AS 'Anzahl' from beitrag where standort = :standortnr group by jahr
(standortnr wird zur Laufzeit als veränderlicher Parameter benutzt)

Beschriftung ist in den jeweiligen Charts auf 'Info' gestellt (d.h. unter den Balken steht das Jahr) und Balken steht auf 'Anzahl'


Das Problem ist dass der allgemeine Query z.B. alle Jahre ab 1996 zurückliefert, der Standort-Query aber erst ab z.B. 1998 da es vorher keine Beiträge von dort gab.
(Der SQL Server liefert also weniger Datensätze für das Standort-Chart)

Darum haben die 2 verschiedenen Charts auch unterschiedl. viele Gesamtbalken (und somit versch. Breiten der einzelnen Balken)

:gruebel: Wie krieg ich das in einheitlicher Optik hin...

Beg 20. Nov 2003 14:05

Re: Frage zu DbChart
 
Na ja,
du nimmst das Ergebnis vom allgemeinen Query und fügst die Datensätze in die TempTabelle.
somit hättest du in der temp Tabelle schon mal die Daten von 1996 bis 2003.

insert into temp (Jahr,Standort1) Values(AllgemQuery.FieldByName('INFO').AsDate,Allg emQuery.FieldByName('Anzahl').AsInteger)


Dann nimmst du den StandortQuery und machst mit diesen Daten einen Update auf die TempTabelle.

update temp
set Standort2 = StandortQuery.FieldByName('Anzahl').AsInteger
where Jahr = AllgemQuery.FieldByName('INFO').AsDate

Jetzt stehen von der StandortQuery bei den Jahren 1996,1997 NULL Werte in der TempTabelle.

Jetzt nimmst du Chart1 und setzt die X Werte auf Jahr und
die Balken bekommen Standort1.

Bei Chart2 und setzt die X Werte auf Jahr und
die Balken bekommen Standort2.

Somit stehen die Balken der jeweiligen Jahre untereinander.

trialfreak 24. Nov 2003 21:11

Re: Frage zu DbChart
 
Hallo Beg,
danke das hilft mir schon viel weiter :)

Falls mySQL irgendwann mal SubSelects unterstützt (4.1?) muss ich nur die temporäre Tabelle rausnehmen - die Vorgehensweise bleibt gleich.

Kannst du mir vielleicht noch sagen wie ich eine temporäre Tabelle die nur im Speicher existiert erstellen kann und wie ich mit der umgegehen muss?
Das wäre super...

mfg,
Christian

Beg 27. Nov 2003 10:37

Re: Frage zu DbChart
 
Hallo,

Zitat:

Kannst du mir vielleicht noch sagen wie ich eine temporäre Tabelle die nur im Speicher existiert erstellen kann und wie ich mit der umgegehen muss?

man könnte ein Record und dynamisches Array verwenden,
oder ein ClientDataSet (soll wie ein Memory Table funktionieren),
aber da kenn ich mich leider nicht aus.

Gruß

Beg


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr.

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