Zitat:
Du fragst doch die Felder der Tabelle ab mit
Source:
select * from TabelleA
oder mit
Source:
select Feld1, Feld2, Kunden_Id, FeldXyz from TabelleA
oder etwa nicht?
dann kannst du doch auch gleich abfragen
Source:
select A.Feld1, A.Feld2, A.Kunden_ID, B.Name, B.Nachname
from TabelleA A
inner join Kundentabelle B ON (A.Kunden_ID=B.ID)
Etwas anderes ist das mit dem LokupFeld,
Man kann auch der
Query dynamisch zur Laufzeit alle Felder hinzufügen lassen (ist dann als ob man sie im Feld-Editor hinzugefügt hätte) und dann ein solches Lookup-Feld hinzufügen.
Das ist aber etwas Arbeit.
Am einfachsten ist es doch, die Felder aus den entsprechenden Tabellen gleich mit abzufragen (wie oben).
Grüß Dich jlanger!
Ja das klingt zwar nett, aber: Ich möchte meine
DB-Oberfläche möglichst dynamisch erzeugen. Soll Heißen beim Start der Anwendung wird für jede Tabelle eine
Query erzeugt. Je nach Inhalt der Tabelle soll auch das zugehörige
SQL-Statement generiert werden. Z.B.:
Tabelle Kunde->
Select * from Kunde
So weit so gut. Damit habe ich dann eine Abrage, die mir alle Felder der Tabelle liefert. Das Dumme ist, das ich für die Darstellung meiner Tabellen jeweils ein DBGrid verwende. Wenn ich nun die Tabellen-Daten darstelle, bekomme ich auch nur die Felder die vorhanden sind.
Du hast Recht: ich könnte das Statement mit einem Join versehen, so dass ich die Daten in meinem Dataset habe. Das ist bei einer dynamischen Erzeugung allerdings nicht so ohne weiteres möglich, denn dafür brauche ich ja die Fremdschlüssel jeder Tabelle, und die zu referenzierenden Werte aus der Detail-Tabelle.
Du hast auch Recht: die dynamische Erzeugung der Lookupfelder ist aufwendig.
Meine bisherige theoretische Lösung sieht wie folgt aus:
Ich benenne in der
DB alle Fremdschlüssel nach dem Prinzip: 'Tabellenname'+'_'+'Anzeigename'
Beispiel:
Tabelle Kunde:
Kunde_ID
Kundenname
Tabelle Bestellung
Bestellung_ID
ProduktName
Kunde_ID
=> in der Tabelle "Bestellung" existiert ein Fremschlüssel diesen nenne ich dann: "Kunde_Kundenname".
Wenn ich jetzt im Programm meine
Query erzeuge, frage ich mit "Show keys from '
DB-Name'+'.'+'Tabellenname'" die Schlüsselfelder ab. Als Namen bekomme ich dann für die Tabelle "Bestellung": 'Kunde_Kundenname'. Dieses Ergebnis der Abfrage muss ich dann noch trennen in 'TabellenName' und 'FeldName'. Damit habe ich das Lookup.
Mein
SQL-Statement ergänzt sich dann:
SQL-Code:
select Bestellung.*,Kunde.KundenName
from Bestellung, Kunde
Alles klar?
Ich sehe keine einfachere Möglichkeit. Vielleicht hast Du ja noch eine Idee!?
Ich freu mich auf Deine Antwort,
Gruß, Barnti
P.S.: Ich habe die Nachricht auch noch einmal zum aktuellen thread gepostet