Zitat von
sputum:
...ich habe das Problem, dass ich eine Integervariable zur Laufzeit in eine
SQL Abfrage einbauen will ...
Hai sputum,
wenn Werte in eine
SQL-Abfrage müssen würde ich dort grundsätzlich mit Prarametern arbeiten.
Versuche es mal so:
Delphi-Quellcode:
with datamodul.abfrage2
do
begin
SQL.Text := '
UPDATE prreifen' + #10
+ '
SET pr_lagerbestand = pr_lagerbestand + :wert' + #10
+ '
WHERE prtyp LIKE ":prtpy"' + #10
+ '
AND prler LIKE ":prler"' + #10
+ '
AND prtyp LIKE ":prtyp2"' + #10
+ '
AND prus LIKE ":prus"' + #10
+ '
AND prge LIKE ":prge"';
with Parameters
do // Parameter zuweisen
begin
ParamCheck := True;
ParamByName('
wert').Value := addProdukt.nb_anzahl;
ParamByName('
prtype').Value := addProdukt.nb_prodtype;
ParamByName('
prler').Value := addProdukt.nb_hersteller;
ParamByName('
prtype2').Value := addProdukt.nb_wetter;
ParamByName('
prus').Value := addProdukt.nb_status;
ParamByName('
prge').Value := addProdukt.nb_geschklasse;
end;
ExecSQL;
end;
Aber noch einige Anmerkungen
a) Du machst deine "WHERE-Bedinungen" alle mit
LIKE. Da Du aber einen kompletten String und keine "Platzhalter" übergibst kannst Du auch mit
feld = bedingung arbeiten.
b) Du hast zweimal das Feld
prtyp in deiner Abfrage. Durch den Operator AND verhinderst Du damit ja das ein Datensatz gefunden werden kann
c) Warum ist die WHERE-Bedingung denn so lange? Gibt es keine eindeutigere Bedingung für dein Update?
Stephan B.
"Lasst den Gänsen ihre Füßchen"