Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mehrere Tabellen in einem DBGrid darstellen (https://www.delphipraxis.net/147122-mehrere-tabellen-einem-dbgrid-darstellen.html)

sebastian1979 2. Feb 2010 07:54

Datenbank: Interbase • Zugriff über: BDE

Mehrere Tabellen in einem DBGrid darstellen
 
Hallo,

ich möchte gerne mehrere Tabellen in einem DBGrid darstellen,
da ich die nötige Anzahl der Spalten nicht in eine Tabelle bekomme.

Es handelt sich um ca. 600 Spalten, der Aufbau sieht wie folgt aus:

Tabelle1: KommNr|Edit1|Edit2|...
Tabelle2: KommNr|Edit255|Edit256|...
Tabelle3: KommNr|Edit510|Edit511|...|Edit600

Es sollen eh nicht alle angezeigt werden aber in dem Programm selber
kann man auswählen welche Felder hinterher sichbar sind ... z.B.:

Nr|Edit2|Edit15|Edit300|Edit401|Edit555

Das schönste wäre natürlich, wenn mit jemand sagen kann wie ich 600 Spalten in eine Tabelle bekomme.

Wenn die beiden obrigen Varianten nicht möglich sind, dann werde ich die Daten manuell in ein Grid einfügen müssen...
...oder besser noch ??? 3 DBGrid visible=false und ein StringGrid für die Darstellung (DBGrid1+DBGrid2+DBGrid3=StringGrid)???
Das Problem ist nur, ich möchte hinterher noch sortieren können!!!

Ich hoffe Ihr könnt mir helfen.
Vielen Dank

mkinzler 2. Feb 2010 08:05

Re: Mehrere Tabellen in einem DBGrid darstellen
 
Das Zauberwort heisst Join.
Aber dazu ein paar Bemerkungen:
-Wie praktisch ist es deart viele Felder gelichzeitig in einem Grid darzustellen?
-Du solltest dich mal mit dem Thema Normalisierung beschäftigen.

sebastian1979 3. Feb 2010 07:33

Re: Mehrere Tabellen in einem DBGrid darstellen
 
Hallo,

vielen Dank für die Antwort, habe mir verschiedene Beiträge durchgelesen, kriege es aber nicht richtig hin.

1. ich habe eine TIBQuery angelegt
2. habe ich diese als Datasource bei dem DBGrid hinterlegt
3.:
Delphi-Quellcode:
  mprodata.IBQuery.SQL.Clear;
  mprodata.IBQuery.SQL.Add('SELECT KOMM.KOMMNR, KOMM.DATUM, KOMM2.DBEDIT255 FROM KOMM INNER JOIN KOMM AS KOMM2 ON KOMM.KOMMNR=KOMM2.KOMMNR');
  mprodata.IBQuery.Open;
...wird beim Start ausgeführt...

Allerdings bekomme ich die Meldung 'Column unknown KOMM2.DBEDIT255'

Allerdings gibt es die Tabelle KOMM2.EDIT255

Vielen Dank für Eure Hilfe.

mkinzler 3. Feb 2010 07:47

Re: Mehrere Tabellen in einem DBGrid darstellen
 
SQL-Code:
SELECT
    K.KOMMNR, K.DATUM, K2.DBEDIT255 
FROM
    KOMM k
        JOIN KOMM k2 ON K2.KOMMNR=K.KOMMNR;

scrat1979 3. Feb 2010 12:31

Re: Mehrere Tabellen in einem DBGrid darstellen
 
Bei neuen Abfragen würde ich grundsätzlich IMMER zuerst eine geeignete GUI für die Abfrage verwenden. Wenn die Abfrage nämlich hier funktioniert und in deinem Programm nicht, dass weißt Du, dass der Fehler in Deinem Programm liegen muss. An sonsten kann man in der GUI die Abfrage entsprechend Anpassen und sieht gleich die Resultat-Tabelle.

Außerdem arbeitet es sich mit den GUIs wirlich sehr übersichtlich und komfortabel... Das nur als TIP :)

SCRaT

sebastian1979 10. Mär 2010 14:36

Re: Mehrere Tabellen in einem DBGrid darstellen
 
Hallo und vielen Dank für die Antworten.

Bin leider erst jetzt dazu gekommen weiter zu programmieren.

Mein Query und JOIN Problem ist gelöst und funktioniert soweit.
Allerdings habe ich noch ein Problem mit der Sortierung.

Delphi-Quellcode:
('SELECT K.KOMMNR, K.DATUM, K.DATUM_CHANGE, K.TERMIN, K.FIXTERMIN' + gridliste + ' FROM KOMM K JOIN KOMM2 K2 ON K2.KOMMNR=K.KOMMNR JOIN KOMM3 K3 ON K3.KOMMNR=K.KOMMNR JOIN KOMM4 K4 ON K4.KOMMNR=K.KOMMNR where ERLEDIGT = 0 and ARCHIV = 0 ORDER BY '+sort);
'sort' ist eine Variable dir ich über das klicken des spaltentitels füttere.

Die Sortierung funktioniert für die Tabelle KOMM einwandfrei, allerding wenn man nach einer Spalte aus den anderen Tabellen sortieren möchte, kommt eine Fehlermeldung. Habe auch versucht über "ORDER BY K2.SPALTENNAME" zu sortieren, funzt auch nicht.

Vielen Dank für Eure Hilfe.

Mit den GUI werde ich mich noch beschäftigen, vielen Dank für die Info.

Gruss, Sebastian

p80286 10. Mär 2010 15:36

Re: Mehrere Tabellen in einem DBGrid darstellen
 
Es soll ja DBS geben die müssen das Sortierfeld auch in der ausgabe haben.
halte ich aber für ein böswilliges Gerücht.

Gruß
K-h

sebastian1979 11. Mär 2010 06:27

Re: Mehrere Tabellen in einem DBGrid darstellen
 
Mein Problem hat sich erledigt, die Fehlermeldung kam von einem IndexFieldbyName auf die erste Datenbank. :wall:

mit "...ORDER BY K2.Spaltenname" oder "...ORDER BY K3.Spaltenname" usw. funktioniert es doch.

Vielen Dank.


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