Delphi SQL Актуализиране на единичен запис с помощта на низова променлива

Имам следното кодиране. Всеки път, когато някой иска да купи компактдиск, количеството трябва да бъде приспаднато. Когато използвам името на cd, кодирането работи, но когато използвам string veriable, нищо не се случва. Моля помогнете.

var scd : string;
begin
   scd := inputbox('CD Name','Enter CD Name','');
   CDQuery.Active := False;
   cdquery.SQL.Clear;
   CDQuery.SQL.Text := 'Update CD_Table Set Quantity = Quantity - 1 where Cdname = ''scd''';
   CDQuery.ExecSQL;
   messageDlg('Quantity was updated',mtInformation,[mbOK],0);
   CDQuery.SQL.text := 'Select * from CD_Table';
   CDQuery.Active := True;  

person Emiel Nel    schedule 29.10.2015    source източник


Отговори (1)


Проблемът е, че търсите компактдиск с име scd, а не стойността, която сте въвели в полето за въвеждане. Трябва да предадете тази стойност на заявката като параметър

нещо като това трябва да свърши работа:

var
  scd: string;
begin
  scd := inputbox('CD Name', 'Enter CD Name', '');
  CDQuery.Active := False;
  CDQuery.SQL.Clear;
  CDQuery.SQL.Text := 'Update CD_Table Set Quantity = Quantity - 1 where Cdname = :Cdname';
  CDQuery.ParamByName('Cdname').AsString := scd;
  CDQuery.ExecSQL;
  MessageDlg('Quantity was updated', mtInformation, [mbOK], 0);
  CDQuery.SQL.Text := 'Select * from CD_Table';
  CDQuery.Active := True;
end;
person Jens Borrisholt    schedule 29.10.2015