在继续执行this question时,使用FireDac并在调用BeforePost事件中调用一个调用Abort的函数时,会导致系统完全中止,从而中断了围绕该中止运行的循环。
while not fdOtherQuery.eof do begin
fdQuery.insert;
fdquery.fields[0].asstring := fdOtherQuery.fields[0].asstring;
fdquery.post;
fdOtherQuery.next;
end;
发布前:
procedure TForm1.AzureDayarKriaAdditionsBeforePost(DataSet: TDataSet);
begin
calculcation;
end;
procedure calculaction;
begin
if fdQuery.fields[0].asstring = 0 then abort;
end;
如果调用了计算中止,则
而不是fdOtherQuery.eof开始
也停止了
最佳答案
Abort引发一个静默异常,可以使用try ...捕获该异常。
while not fdOtherQuery.eof do begin
fdQuery.insert;
fdquery.fields[0].asstring := fdOtherQuery.fields[0].asstring;
try
fdquery.post;
except
on E: EAbort do
begin
// log the error (when needed)
end;
end;
fdOtherQuery.next;
end;