Zitat von
rgorholt:
... Sharky, was Du vorschlägst funktioniert bei mir nur, wenn sich die
Query zu Tabelle 2 im Edit-Mode befindet. ...
Hai Ralf,
dann haben wir uns falsch verstanden.
Ich dachte Du hast
ein Query für die ComboBox (Länder) und ein anders (nicht verknüpftes) für deine zweite Tabelle.
Bei dem Beispiel von mir darf es natürlich keine Verbindung der beiden Tabellen geben.
So wie ich es gezeigt habe kannst Du "nur" auf das Ergebniss der TDBLookupCombobox zugreifen.
Fals es ein Missverständniss dieser Kompo giebt versuche ich die Funktionsweise noche inmal zu erklären:
Gegeben sind zwei Tabellen:
Code:
tbl_anrede: -> DataSet1 -> DataSource1
id : integer;
bezeichnung : string;
tbl_kontakt: -> DataSet2 -> DataSource2
id : integer;
fk_anrede_id : integer;
name : string;
Du kannst nun diese beiden Tabellen in einer Form mit einer TDBLookupCombobox verbinden. Dabei würde in diesem Beispiel gelten:
Delphi-Quellcode:
with DBLookupComboBox1 do
begin
DataSource := DataSource2; // Die "Ziel" Tabelle
DataField := 'fk_anrede_id'; // Das Verknüpungsfeld der Ziel-Tabelle
ListSource := DataSource1; // Die "Quell" Tabelle
ListField := 'bezeichnung'; // Das Anzeigefeld der Quelltabelle
KeyField := 'id'; // Das Verknüpungsfeld der Quell-Tabelle
end;
Wenn Du nun in der TDBLookupCombobox einen Eintrag (ListField) auswählst wird die ZielTabelle in den Editmodus gesetzt und dort wird im Feld
DataField der Wert von
KeyField eingetragen.
Wenn Du aber die TDBLookupCombobox ohne Data* verwendest ist dies nichts anderes als eine Liste welche den Datensatzzeiger immer auf der in
ListSource angegeben TDataSet hat. Und somit kannst Du genau auf diesen Eintrag zugreifen. (ähnlich als hättest Du die Daten in einem DBGrid und würdest darüber einen Datensatz auswählen.
Uff... Sorry wenn ich es nicht genau erklärt habe. Aber ich hoffe Du verstehst was ich meinte.
Stephan B.
"Lasst den Gänsen ihre Füßchen"