Dann geb ich meinen Senf auch noch dazu.
Dazu noch eine Frage: verwendest du SQLdb oder ZEOS?
Das folgende gilt allgemein auch für ZEOS nur Punkt C ist SQLdb spezifisch
A: Wenn schon das SQL Statement direkt zugewiesen wird, dann verwende ich routinemäßig eine lokale Variable, ein SQL.Clear und QuotedStr
Code: Alles auswählen
var s:string;
s:= 'select ang_chipcode from angestellte where ang_chipcode = ' +QuotedStr(edtChipcodeAnlegen.Text);
frmZugang.SQLQuery1.Close;
frmZugang.SQLQuery1.SQL.Clear;
frmZugang.SQLQuery1.SQL.Text:=s;
frmZugang.SQLQuery1.Open;
B: Besser wäre die Methode die af0815 empfahl;
Code: Alles auswählen
var s:string;
s:= 'select ang_chipcode from angestellte where ang_chipcode = :edtChipcodeAnlegen');
frmZugang.SQLQuery1.Close;
frmZugang.SQLQuery1.SQL.Clear;
frmZugang.SQLQuery1.SQL.Text:=s;
frmZugang.SQLQuery1.SQL.ParamByName('edtChipcodeAnlegen').AsString:=edtChipcodeAnlegen.Text;
frmZugang.SQLQuery1.Open;
jedenfalls kann man bei beiden Varianten leicht die lokale Variable beim Debuggen auslesen und sie ggfs auch in einen externen SQL-Client (zb HeidiSQL) werfen um zu sehen ob irgendwas nicht stimmt.
C: Alle SQLdb Konnektoren (also TSQLdbConnector und auch die spezifischen wie TSQLite3Connection etc) haben ein Log-Event OnLog. SQL Logs sind bei mir während der Entwicklung immer eingeschaltet, denn meistens kann man mehr herauslesen als aus einer Datenbankexception die meistens kryptisch ist.
Zudem sind aus den Logmeldungen meistens auch die SQL-Statemens kopierbar die man extern austesten kann.