Danke an alle für die Antworten, war sogar eine funktionierende Lösung dabei.
@DeddyH: Deine Lösung hat leider ebenfalls "Unbekannter Fehler" ausgeworfen. Allerdings fehlte bei dir im Quellcode eben auch eine Klammer zum Schluss und ich hatte Probleme zu compilieren, solange die Funktion AnsiQuotedStr() bzw. QuotedStr() verwendet wurde.
@shmia:
Wenn du Glück hast, dann funktioniert Folgendes:
Delphi-Quellcode:
var
sql :
string;
begin
sql := '
INSERT INTO ortsteile (ortsteil, orte_id) '+
'
VALUES(''
@@@''
, SELECT orte.id FROM orte WHERE orte.ort=:pOrt AND orte.plz=:pPLZ';
sql := StringReplace(
sql, '
@@@', sOrtsteil, []);
Query.SQL.Text :=
sql;
Query.Parameters.ParamValues['
pOrt'] := sOrt;
Query.Parameters.ParamValues['
pPLZ'] := sPLZ;
Query.ExecSQL;
end;
PS: ahhrg, ich wollte eigentlich die Variante ohne Schlüsselwort VALUES verwenden...
Delphi-Quellcode:
sql := '
INSERT INTO ortsteile (ortsteil, orte_id) '+
'
SELECT ''
@@@''
AS ortsteil,orte.id FROM orte WHERE orte.ort=:pOrt AND orte.plz=:pPLZ';
sql := StringReplace(
sql, '
@@@', sOrtsteil, []);
Deine 2. Variante funktioniert reibungslos, aber muss man das ganze wirklich so umständlich gestalten?
Vielleicht gibts ja noch ein paar andere Ideen, wo das Problem liegen könnte oder so. Die Datentypen beider Spalten (
ortsteile.orte_id und
orte.id) sind jedenfalls gleich. Andernfalls bedanke ich mich schonmal für die Mühen.
mfg Winned