Hallo!
In folgender Function möchte ich die ID einer Detail-Tabelle zu einem Wert auslesen.
Falls der Wert nicht existiert soll er angelegt und die id zurückgegeben werden.
Delphi-Quellcode:
function TDataModule1.GetNameID(Table, Value:
String): Integer;
begin
Result := 0;
if Table <> '
'
then
with UpdateQuery
do
begin
SQL.Clear;
SQL.Add('
SELECT id FROM '+ Table +'
WHERE name = :value');
ParamByName('
value').AsString := Value;
Open;
if RecordCount > 0
then // Existiert !
Result := FieldByName('
id').AsInteger
else
begin // Anlegen !
SQL.Clear;
SQL.Add('
INSERT INTO '+ Table +'
(name) VALUES (:value)');
ParamByName('
value').AsString := Value;
ExecSQL;
ApplyUpdates;
Result := GetNameID(Table, Value);
end;
end;
end;
Soweit klappt alles. Wenn ich allerdings als Value 'Waiting for darkness, Dancing at the crowded e.p' übergebe erhalte ich eine Endlosschleife.
Wahrscheinlich liegt es an dem Komma, vielleicht aber auch nicht.
Ich habe versucht den Parameter im ersten Statement in Hochkommas zu stellen, bekomme aber eine Fehlermeldung 'Parameter nicht gefunden...'
WASNU?