AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zwei Spalten -> Eine Spalte / Eine Zeile
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Spalten -> Eine Spalte / Eine Zeile

Ein Thema von HolgerCW · begonnen am 19. Sep 2008 · letzter Beitrag vom 19. Sep 2008
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

Zwei Spalten -> Eine Spalte / Eine Zeile

  Alt 19. Sep 2008, 15:24
Datenbank: ORACLE • Version: 10 • Zugriff über: BDE
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
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Zwei Spalten -> Eine Spalte / Eine Zeile

  Alt 19. Sep 2008, 15:31
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
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: Zwei Spalten -> Eine Spalte / Eine Zeile

  Alt 19. Sep 2008, 15:37
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
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Zwei Spalten -> Eine Spalte / Eine Zeile

  Alt 19. Sep 2008, 15:43
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.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: Zwei Spalten -> Eine Spalte / Eine Zeile

  Alt 19. Sep 2008, 15:48
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
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Zwei Spalten -> Eine Spalte / Eine Zeile

  Alt 19. Sep 2008, 15:55
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.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

Re: Zwei Spalten -> Eine Spalte / Eine Zeile

  Alt 19. Sep 2008, 16:03
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 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