Um es ganz deutlich zu sagen:
1.) Stringliterale werden unter
SQL/92 in
einfache Hochkommas (nicht doppelte Anführungszeichen) gesetzt.
2.) Man sollte keinesfalls die Hochkommas selbst hinschreiben, sondern immer die Funktion
QuotedStr oder noch
besser Parameter benützen
Angenommen die Variable wert1 aus dem Beispiel enthielte den Text
Wayne's World; die Folge wäre bei Nichtbeachtung dieser Regel eine Syntaxfehler
3.) Niemals in einer Klasse (z.B. von TForm abgeleitet) auf die Instananzvariable zugreifen!!!
Delphi-Quellcode:
procedure TFmain.Button1Click(Sender: TObject);
begin
// ganz böser Fehler: es wird die Variable FMain angesprochen
Fmain.ado_query.Active:= FALSE;
// richtig:
ado_query.Active:= FALSE;
4.) Finger weg von "try...except", wenn man das Prinzip nicht verstanden hat!
Delphi-Quellcode:
try
ado_query.ExecSQL;
except
// Ganz schlecht: es wird nur eine Meldung mit dem völlig aussagelosen Text "Duplikat?" ausgegeben
// der Fehler könnte aber völlig andere Ursachen haben
// der Programmfaden wird fortgefüht, obwohl ein Fehler vorliegt
Messagebox(
handle,'
Duplikat?','
',0);
end;
Delphi-Quellcode:
try
ado_query.ExecSQL;
except
// Richtig: vernünftige Fehlermeldung
on E:
Exception do
begin
E.
Message := '
Fehler bein Einfügen in Tabelle <test>'#13#10+
'
(evtl. Duplikat)'#13#10+
E.
Message;
// orginale Fehlermeldung anhängen
raise;
// Exception erneut auslösen
end;
end;