Выберите и вставьте в порядке, но обновление не работает в Delphi - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь обновить свою запись в базе данных, где я обновляю столбец balance. Мне удалось сделать команду выбора и вставить, но обновление не работает. Вот мой код.

unit widrawMoneyPanel;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Controls.Presentation, FMX.Edit, data_module;

type
  TForm8 = class(TForm)
    money: TEdit;
    widraw: TButton;
    back: TButton;
    procedure widrawClick(Sender: TObject);
    procedure backClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    id: integer;
  end;

var
  Form8: TForm8;
  currentBalance: Double;

implementation

uses customerpanel, updatecustomer;
{$R *.fmx}

procedure TForm8.backClick(Sender: TObject);
begin
  form7.balance.Text := floattostr(currentBalance);
  form7.show;

end;

procedure TForm8.widrawClick(Sender: TObject);
begin

  DataModule1.ADOQuery1db.SQL.Text := 'SELECT * FROM customer WHERE id = :ids';

  DataModule1.ADOQuery1db.Parameters.ParamByName('ids').Value := id;

  try
    DataModule1.ADOQuery1db.open;
    currentBalance := strtofloat(DataModule1.ADOQuery1db.FieldByName('balance')
      .AsString);

    currentBalance := currentBalance - strtofloat(money.Text);

  finally
    DataModule1.ADOQuery1db.close;
  end;

  DataModule1.ADOQuery1.SQL.Text :=
    'update customer set balance = :currentBalance where id= :ids';
  DataModule1.ADOQuery1.Parameters.ParamByName('currentBalance').Value :=
    currentBalance;
  DataModule1.ADOQuery1.Parameters.ParamByName('ids').Value := id;

  DataModule1.ADOQuery1db.ExecSQL;

end;

end.

1 Ответ

4 голосов
/ 31 января 2020

Вы присваиваете UPDATE SQL на DataModule1.ADOQuery1, но вместо этого вы звоните ExecSQL() на DataModule1.ADOQuery1db, которому все еще назначены ваши SELECT SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...