Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zwei Spalten -> Eine Spalte / Eine Zeile (https://www.delphipraxis.net/120962-zwei-spalten-eine-spalte-eine-zeile.html)

HolgerCW 19. Sep 2008 14:24

Datenbank: ORACLE • Version: 10 • Zugriff über: BDE

Zwei Spalten -> Eine Spalte / Eine Zeile
 
Hallo zusammen,

ich habe drei Spalten in einer Tabelle. Nun möchte ich, das die eine Spalte Zeilenweise angezeigt wird.

Diese Tabelle

MITARBEITER GRUPPEN DATUM

Mitarbeiter1 Gruppe1 01.01.2008
Mitarbeiter1 Gruppe2 05.08.2007
Mitarbeiter2 Gruppe1 04.07.2006
Mitarbeiter3 Gruppe1 11.05.2005
Mitarbeiter3 Gruppe2 06.03.2008

... soll in einem DBGrid so aussehen ...

----------------Gruppe1-----Gruppe2
Mitarbeiter1 01.01.2008 05.08.2007
Mitarbeiter2 04.07.2006
Mitarbeiter3 11.05.2005 06.03.2008

Gruss

Holger

omata 19. Sep 2008 14:31

Re: Zwei Spalten -> Eine Spalte / Eine Zeile
 
SQL-Code:
SELECT m.mitarbeiter, g1.datum AS Gruppe1, g2.datum AS Gruppe2
FROM tabelle m
LEFT JOIN tabelle g1
  ON    m.mitarbeiter = g1.mitarbeiter
     AND g1.gruppe = 'Gruppe1'
LEFT JOIN tabelle g2
  ON    m.mitarbeiter = g2.mitarbeiter
     AND g2.gruppe = 'Gruppe2'
GROUP BY m.mitarbeiter
ORDER BY m.mitarbeiter

HolgerCW 19. Sep 2008 14:37

Re: Zwei Spalten -> Eine Spalte / Eine Zeile
 
Vielen dank schon einmal,

nun ist es aber so das neue Gruppen in der Tabelle hinzu kommen können. Wie kriege ich das Variabel gestaltet ?

Gruss

Holger

omata 19. Sep 2008 14:43

Re: Zwei Spalten -> Eine Spalte / Eine Zeile
 
Das geht eigentlich gar nicht!

Wenn es unbedingt ein DBGrid sein soll, dann vermutlich nur über eine SP.

Anderer Vorschlag, nimm ein DrawGrid oder StringGrid und male alles selber.

HolgerCW 19. Sep 2008 14:48

Re: Zwei Spalten -> Eine Spalte / Eine Zeile
 
Hast Du für mich ein Beispiel wie ich bei dem selber malen an die Sache dran gehen kann ?

Mit DBGrid gibt es da gar keine Möglichkeit. Muss da immer eine feste Anzahl von Spalten sein ?

Gruss

Holger

omata 19. Sep 2008 14:55

Re: Zwei Spalten -> Eine Spalte / Eine Zeile
 
Das Problem ist nicht das DBGrid, sondern die Datenbank (nicht nur Oracle, sondern jede!).

Du must in der SELECT-Anweisung ja immer die Spalten angeben. An der Stelle kannst du nicht so ohne weiteres flexibel sein. Dies würde nur über eine SP gehen, in der du eine Temporäre Tabelle erstellst, die dann die benötigten Spalten besitzt und die dann natürlich noch entsprechend gefüllt und zurückgegeben werden muss.

Bist du dir sicher, dass deine gewünschte Darstellungsart sinnvoll ist? Ich meine, wenn da jetzt 100 Gruppen existieren, dann wird das recht breit! Wenn die Anzahl begrenzt ist, kannst du meinen Vorschlag mit den LEFT-JOINs vielleicht doch benutzen.

Ok, und noch was zum selber machen...

Du musst für die Zeilen alle Mitarbeiter ermitteln und für die Spalten alle Gruppen. Mit diesen Informationen kannst du dann schonmal deine Matrix aufspannen. Mit einer dritten Abfrage kannst du dann im Kreuzungspunkt das jeweilige Datum eintragen.

HolgerCW 19. Sep 2008 15:03

Re: Zwei Spalten -> Eine Spalte / Eine Zeile
 
Ich finde die Darstellung auch nicht sinnvoll, aber der Chef möchte es so.

Ich weiss auch vorher nicht wie die Gruppen benannt werden, daher habe ich da ein weiteres Problem, wenn ich die Matrix für max. 20 Gruppen vordefinieren möchte. Ich könnte ja die IDs nehmen, nur ist es so, das nur bestimmte Gruppen in der Matrix erscheinen werden, somit sind die IDs auch durcheinander.

Ich werde das mit einem Stringgrid machen. Damit habe ich schon Erfahrungen. Habe damit schon mal einen Jahreskalender für alle Mitarbeiter gemacht.

Gruss

Holger

P.S.: Jetzt aber erstmal Wochenende ;) Danke nochmal für die Tips


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