![]() |
Datenbank: BDE • Zugriff über: TTable & TDatasouce
DBGrid und verknüpfte Tabelle
Hallo
Mein Problem ist, ich habe zwei tabellen verknüpft und möchte das beide Tabellen im DBGrid angezeigt werden. Wie macht man das am besten MfG Uwe 111 |
Re: DBGrid und verknüpfte Tabelle
Hallo Uwe,
du schreibst von Verknüpfung und gibst TTable als verwendete Komponente an - dann hast du eine Master-Detail-Beziehung eingerichtet? Verwende eine TQuery und verknüpfe beide Tabellen über einen JOIN - die Query kannst du dann genau wie eine Tabelle als DataSet deiner DataSource angeben.
Delphi-Quellcode:
Grüße vom marabu
begin
with Query do begin SQL.Text := 'select a.kunde, a.nummer, a.datum, p.nummer, p.artikel, p.anzahl ' + 'from auftraege a, positionen p ' + 'where a.id = p.auftrag ' + 'order by a.datum'; Open; // ... end; end; |
Re: DBGrid und verknüpfte Tabelle
Statt TTable ein TQuery verwenden. Dort einen SQL-Join über beide Tabellen erzeugen.
[edit:]Marabu war wieder mal schneller! ;-)[/edit] |
Re: DBGrid und verknüpfte Tabelle
Hi Markus,
das ist nur gerecht - was glaubst du denn wie lange ich an meinem Beitrag gefeilt habe? Verschmitzte Grüße nach Heilbronn marabu |
Re: DBGrid und verknüpfte Tabelle
Hallo
Ich komme mit SQL nicht klar, geht es auch nicht anders? MfG Uwe 111 |
Re: DBGrid und verknüpfte Tabelle
Poste mal die Beschreibungen der beiden Tabellen, dann können wir die helfen. SQL ist wirklich nicht schwer :-)
|
Re: DBGrid und verknüpfte Tabelle
Hallo
Tabelle1 Nr_ID = Primärkey Name Vorname Tabelle2 Adressen_Id = Primärkey PLZ ORT Strasse MfG Uwe 111 |
Re: DBGrid und verknüpfte Tabelle
Bei der 2. tabelle fehlt irgendwie der Foreign Key, mit dem die Adresse mit dem Namen verknüpft ist.
Tabelle1 Nr_ID = Primärkey Name Vorname Tabelle2 Adressen_Id = Primärkey Name_Id = Foreign Key auf Tabelle1.Nr_ID PLZ ORT Strasse Dann würde die SQL-Abfrage
SQL-Code:
Noch besser wäre es aber eine Zwischentabelle zu generieren, die eien n zu m Beziehung ermöglicht.
select
t1.Nr_ID, t1.Name, t1.Vorname, t2.Adressen_Id, t2.PLZ, t2.Ort, t2.Strasse from Tabelle1 t1, Tabelle2 t2 where t2.Name_ID = t1.Nr_ID; Tabelle3 ID(PK) Nr_ID (FK) Adressen_ID(FK) dann würde die Abfrage so aussehen:
SQL-Code:
select
t1.Nr_ID, t1.Name, t1.Vorname, t2.Adressen_Id, t2.PLZ, t2.Ort, t2.Strasse from Tabelle3 t3, Tabelle1 t1, Tabelle2 t2, where t1.Nr_ID = t3.Nr_ID and t2.Adressen_ID = t3.Adressen_ID; |
Re: DBGrid und verknüpfte Tabelle
Hallo
Erstmal danke. Das mit der SQL habe ich hinbekommen, aber jetzt kann ich nicht mehr editieren. MfG Uwe 111 |
Re: DBGrid und verknüpfte Tabelle
Ein Query ist nur direkt bearbeitbar, wenn die Datenbank einen updateable Cursor unterstützt. Die BDE tut das m.W. nicht. Wenn die Abfrage, wie in deinem Fall aus einem Join besteht ist es nochmal schwerer. Wenn die Änderungen sich auf eine Tabelle beziehen kannst du wie folgt vorgehen:
Füge eine TUpdateQuery-Komponente hinzu, füge die gewuünschten DML-Queries ein ( INSERT, UPDATE, DELETE) und Verknüpfe den Query mit der Eigenschaft UpdateObject mit dieser Kompoenente. Sonst eigene Query/Table-Kompoenente für die Änderungen and den 2/3 Tabellen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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