Kleine Änderung dazu noch:
Delphi-Quellcode:
procedure TfrmGettingStarted.Button1Click(Sender: TObject);
begin
if dbMain.Connected then
begin
if qryproducts.Active then
qryproducts.Close; //bei FireDac geht auch qryproducts.Disconnect();
qryproducts.FetchOptions.AutoClose := False;
qryproducts.SQL.Clear;
qryproducts.SQL.Add('SELECT *');
qryproducts.SQL.Add('FROM kd_data') ;
qryproducts.SQL.Add(' WHERE kd_data.kd_vname like :kd_vname');
qryproducts.SQL.ParamByName('kd_vname').AsString := Edit1.Text;
qryproducts.Open;
end;
end;
Grundsätzlich sollten Eigenschaftsänderungen bei aktiven Queries vermieden werden (Siehe
qryproducts.FetchOptions.AutoClose).
Parameterbezeichnungen wenn möglich so benennen wie das Feld (
kd_vname).
Ich gebe bei Verwendung von Parametern immer den Datentyp mit an, weil bei mir
immer ein Fehler auftritt:
Delphi-Quellcode:
qryproducts.SQL.ParamByName('kd_vname').DataType := ftString;
qryproducts.SQL.ParamByName('kd_vname').Value := Edit1.Text;