即使ApplyUpdates在try ...之外,仍然会出现错误弹出窗口

dav*_*vej 5 delphi odbc

找到解决方案,请参阅下面的评论

D5,odbc到mysql数据库

这段代码:

  with QryCmdPerf do begin
    Close;
    ParamByName('ACCTID').AsInteger:= AcctId;
    ParamByName('FROMDT').AsString:= MySQLDate(FromDt);
    ParamByName('TODT').AsString:= MySQLDate(ToDt);
    Open;
    first;
    try
      edit;
      FieldByName('PnL').AsFloat:= 97979;
      ApplyUpdates;
    except
      close;
    end;
  end;    // with
Run Code Online (Sandbox Code Playgroud)

(特别是"ApplyUpdates")如果PnL字段已经具有值97979,则会出现带有文本"Update Failed"的弹出窗口,显然是因为这段代码:

procedure TUpdateSQL.ExecSQL(UpdateKind: TUpdateKind);
begin
  with Query[UpdateKind] do
  begin
    Prepare;
    ExecSQL;
    if RowsAffected <> 1 then DatabaseError(SUpdateFailed);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

在DBTables.pas中.无论如何,我希望能够发布ApplyUpdates,如果它没有进行任何更新,就不必担心弹出窗口.但如果"尝试......除外"不起作用,会是什么?

TIA

dav*_*vej 2

简短的答案是,您必须为 OnUpdateError 设置一个事件处理程序,否则没有多少“try... except”块将阻止弹出窗口。长答案是它似乎是 odbc 的一个错误。复制品在这里: http: //www.codeupload.com/3919, 任何想要查看它的人都可以。你可以跳过 MySQL 的东西,任何 odbc 数据库都可以。