找到解决方案,请参阅下面的评论
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
简短的答案是,您必须为 OnUpdateError 设置一个事件处理程序,否则没有多少“try... except”块将阻止弹出窗口。长答案是它似乎是 odbc 的一个错误。复制品在这里: http: //www.codeupload.com/3919, 任何想要查看它的人都可以。你可以跳过 MySQL 的东西,任何 odbc 数据库都可以。
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |