Das Feld
ART_NUM wird wohl ein numerisches Feld sein.
Du gibst bei Locate aber einen String ein.
Normalerweise ist dies zulässig; die
VCL wandelt intern von String nach Integer.
Sollte die Variable s2 allerdings nicht umgewandelt werden, kommt es zu einem Fehler.
Besser so:
Delphi-Quellcode:
procedure Tdatasearch.Button1Click(Sender: TObject);
var s1:
String;
artnum : integer;
begin
s1 := Edit1.Text;
try
artnum := StrToInt(Edit2.Text);
except
on E:
Exception do
begin
Edit2.Setfocus;
// Focus auf fehlerhaftes Feld
// aussagekräftige Fehlermeldung bilden
// und zwar ohne die orginale Message zu zerstören
E.
Message := '
Artikelnummer ist falsch'#13#10+E.
Message;
raise;
end;
end;
if CheckBox1.Checked = true
then
begin
if CheckBox2.Checked = true
then
begin
if DataModule4.Tabelle.Locate('
ART_NAME;ART_NUM', VarArrayOf([s1, artnum]), [loPartialKey])
then