Zitat von
Stern:
...Ich möchte nun gerne den Primärschlüssel des ausgewählten Kunden in die entsprechende Spalte (Foreign key) des Artikels schreiben. Kann mir da jemand nen Tipp geben???
Jo -> DBLookupComboBox1.
KeyValue ist das 'Geheimnis'
Damit erhälst du (in deinem Fall die ID=Primärschlüssel des Kunden) den entsprechenden Wert des KeyField vom ausgewählten Eintrag(ListField) der Box.
Noch ein Tipp: um die Hochkommaorgie oder QuotedString-Geschichte zu umgehen, bietet sich die sog. Parametrisierung an:
Delphi-Quellcode:
//rMain.SQL.Clear; <--- nicht notwendig, wenn SQL.Text:= verwendet wird
qrMain.SQL.Text:='
INSERT INTO artikel '+
'
(text, jahr, land, kunde) '+
'
VALUES (:TEXT, :JAHR, :LAND, :KUNDE)';
qrMain.SQL.Params[0].Value := Edit1.Text;
qrMain.SQL.Params[1].Value := Edit2.Text;
qrMain.SQL.Params[2].Value := Edit3.Text;
qrMain.SQL.Params[3].Value := DBLookupComboBox1.KeyValue;
{Parameter über Namen ansprechen
qrMain.SQL.ParamByName('TEXT').Value := Edit1.Text;
qrMain.SQL.ParamByName('JAHR').Value := Edit2.Text;
qrMain.SQL.ParamByName('LAND').Value := Edit3.Text;
qrMain.SQL.ParamByName('KUNDE').Value := DBLookupComboBox1.KeyValue;
}
qrMain.ExecSQL;
Die Syntax bzgl der Parameter ist teilweise von der verwendeten QueryKomponente abhängig/unterschiedlich; hier mal die entsprechende Referenz/Dokumentation befragen...
andere Möglichkeit
Delphi-Quellcode:
qrMain.SQL.Text:= Format('INSERT INTO artikel '+
'(text, jahr, land, kunde) '+
' VALUES (%s, %s, %s, %s) ',
[Edit1.Text, Edit2.Text, Edit3.Text, DBLookupComboBox1.KeyValue]);