Home » Tutorials » Datenbanken » Datenbanken für Fortgeschrittene

Datenbanken für Fortgeschrittene

DBLookupCombobox

Nun entwickeln wir eine Eingabemaske für unsere Daten. Das Vorgehen bei den Tabellen Artikel und Lager ist analog zu der Adressdatenbank im DB-Einsteigertutorial. Neues gibt es nur bei der dritten Tabelle (ArtikelAnzahl), da sie Verknüpfungen zu den beiden anderen Tabellen enthält.

Wie an der Komponentenbezeichnung zu sehen ist, benötigen wir u.a. zwei DBLookupComboboxen. Diese enthalten in ihrer Auswahlliste den Inhalt eines bestimmten Feldes einer Tabelle und speichern die Auswahl in einer anderen. Doch der Reihe nach:
Für jede der drei Tabellen benötigen wir eine TTable- und eine TDataSource-Komponente. Bei diesen setzen wir die Eigenschaften TableName bzw. DataSet entsprechend.
Die datensensitiven Komponenten binden wir nun alle über die Eigenschaft DataSource an die TDataSource-Komponente, die mit der Tabelle ArtikelAnzahl verbunden ist. Soweit nichts Neues.
Nun kommen wir zu den DBLookupComboboxen. DataSource und DataField sind hier ganz normal zu setzen. DataField enthält bei der einen Komponente ArtikelID, bei der anderen LagerID. D.h. letztendlich wird eine Zahl, die ID, gespeichert.
Die Eigenschaft ListSource gibt an, von welcher anderen Tabelle der Inhalt stammt, der in der Auswahlliste angezeigt werden soll. Im einen Fall ist das die DataSource-Komponente von Artikel, im anderen Fall von Lager.
Über die Eigenschaft ListField lässt sich festlegen, welche Daten in der Auswahlliste angezeigt werden sollen. Es geht also lediglich um die Anzeige. Deshalb können wir hier im ersten Fall (Artikel) das Feld Bezeichnung und im zweiten (Lager) Ort auswählen, obwohl es sich dabei um Strings handelt und nicht um ganze Zahlen.
Diese Strings werden nicht in dem Feld, das unter DataField angegeben ist, gespeichert. Dafür wird das Feld verwendet, das unter KeyField angegeben ist. Das unter KeyField angegebene Feld ist ebenso wie ListField Teil der fremden Tabelle, die von DBLookupCombobox nicht bearbeitet wird. ListField enthält die Spalte zur Anzeige und KeyField die entsprechenden Daten, die dann in der eigentlichen Tabelle (DataSource) im Feld ArtikelID (DataField) gespeichert werden.
Konkret sieht das bei uns so aus:
Erste DBLookupCombobox (Artikel):

Eigenschaft Wert
DataField ArtikelID
DataSource DataSourceArtikelAnzahl
KeyField ID
ListField Bezeichnung
ListSource DataSourceArtikel

Zweite DBLookupCombobox (Lager):

Eigenschaft Wert
DataField LagerID
DataSource DataSourceArtikelAnzahl
KeyField ID
ListField Ort
ListSource DataSourceLager