Interessant wäre zu erfahren:
- Mit welchem DBMS arbeitest du?
- Mit welcher Delphi-Version arbeitest du?
- Mit welchen DB-Zugriffskomponenten arbeitest du?
Mit bidirektional arbeitenden Zugriffskomponenten funktioniert das bei mir einwandfrei: Ich bereite ein Dataset oder
Query für die zu erwartende Datenmenge vor, indem ich den Select-Befehl im
Objekt
inspektor (
OI) eingebe und dach die anderen
SQL-Befehle wie Update, Insert, Delete usw. Die meisten
DB-Komponenten, die mir bisher unterkamen, erledigen das halb- oder vollautomatisch. Danach klicke ich auf das Dataset bzw.
Query mit der rechten Maustaste und wähle den
Feld
editor (FE), in den ich ebenfalls mit der rechten Maustaste reinklicke und dein Eintrag
Alle Felder hinzufügen ausführe. Danach werden alle Felder (Tabellenspalten) dort namentlich aufgeführt. Nun kann ich z.B. ein Feld markieren und mir im
OI dessen Properties anzeigen lassen. Ich kann aber auch, und das ist wohl des Rätsels Lösung, in einen leeren Bereich des FE wieder mit der rechten Maustaste klicken und den Eintrag
Neues Feld auswählen. Daraufhin erscheint ein Dialogfeld, wo ich z.B. auswählen kann, welchen Typ das Feld haben soll, ob es sich um ein berechnets Feld handeln soll oder einfach – und das ist jetzt wieder dein Ding –
Nachschlagen, was auf englisch soviel wie
Lookup bedeutet. Danach gibts du das Schlüsselfeld, die Datenmenge, den Schlüssel und das Ergebnisfeld an:
- Schlüsselfeld ist der Foreign-Key (FK) in deiner Haupttabelle
- Datenmenge ist die Lookup-Tabelle, in der der eben erwähnte FK den Primary Key (PK) abgibt.
- Schlüssel ist eben jener PK deiner Lookup-Tabelle.
- Ergebnisfeld ist die Spalte, die ausgelesen und angezeigt werden soll.
Nun wird – immer vorausgesetzt, es handelt sich um eine bidirektionale Datenmenge – beim Editieren jenes Feldes im DBGrid ein Lookup-Combo angezeit.
Sollten deine Zugriffskomponenten lediglich unidirektionale Datenmengen bereitstellen, geht das natürlich nicht.