取消后重用 ADOQuery
Reuse ADOQuery after cancellation
我在 Delphi 2010 应用程序中使用异步 ADO 查询。用户可以请求取消查询,否则查询可能会因错误而失败。这是我用来取消查询的代码:
if not Assigned(myADOQuery.Recordset) then exit;
if stFetching in myADOQuery.RecordsetState then begin
fCommand := _Command(myADOQuery.Recordset.ActiveCommand);
fCommand.Cancel;
if Assigned(myADOQuery.Recordset) then myADOQuery.Recordset.Cancel;
end;
if Assigned(myADOQuery.Recordset) then myADOQuery.Recordset.Cancel;
StatusBar1.Panels[2].Text := '';
//ShowMessage('Query Cancelled');
myADOQuery.Close;
我正在使用 ADOConnection ExecuteComplete 向用户显示取消(或其他错误):
if EventStatus = esErrorsOccured then ShowMessage(Error.Description);
我现在希望能够在修改后重新使用查询,但是当我重新运行它时,我得到了相同的错误消息。有什么方法可以重置查询(包括 SQL.Text)并再次 运行ning 吗?
尼姆斯
我认为您的问题可能与您查询的连接对象有关。
AdoConnection 有一个 Errors
集合,它记录了发生的每个 ADO 错误的详细信息。 IIrc,此集合随着使用 AdoConnection 的对象遇到执行错误而累积,直到您在 Errors 接口上调用 Clear
。可能是取消查询执行导致下次执行时出错。
因此,在尝试重新使用 AdoQuery 之前尝试以下操作:
myAdoQuery.Connection.Errors.Clear;
让我们知道您的进展情况。
此外,如果我是你,我会在尝试重新打开 AdoQuery 的 RecordSet 之前测试它是否为 NIL,并在你的取消例程结束时明确地将其设置为 NIL。以防万一...
我在 Delphi 2010 应用程序中使用异步 ADO 查询。用户可以请求取消查询,否则查询可能会因错误而失败。这是我用来取消查询的代码:
if not Assigned(myADOQuery.Recordset) then exit;
if stFetching in myADOQuery.RecordsetState then begin
fCommand := _Command(myADOQuery.Recordset.ActiveCommand);
fCommand.Cancel;
if Assigned(myADOQuery.Recordset) then myADOQuery.Recordset.Cancel;
end;
if Assigned(myADOQuery.Recordset) then myADOQuery.Recordset.Cancel;
StatusBar1.Panels[2].Text := '';
//ShowMessage('Query Cancelled');
myADOQuery.Close;
我正在使用 ADOConnection ExecuteComplete 向用户显示取消(或其他错误):
if EventStatus = esErrorsOccured then ShowMessage(Error.Description);
我现在希望能够在修改后重新使用查询,但是当我重新运行它时,我得到了相同的错误消息。有什么方法可以重置查询(包括 SQL.Text)并再次 运行ning 吗?
尼姆斯
我认为您的问题可能与您查询的连接对象有关。
AdoConnection 有一个 Errors
集合,它记录了发生的每个 ADO 错误的详细信息。 IIrc,此集合随着使用 AdoConnection 的对象遇到执行错误而累积,直到您在 Errors 接口上调用 Clear
。可能是取消查询执行导致下次执行时出错。
因此,在尝试重新使用 AdoQuery 之前尝试以下操作:
myAdoQuery.Connection.Errors.Clear;
让我们知道您的进展情况。
此外,如果我是你,我会在尝试重新打开 AdoQuery 的 RecordSet 之前测试它是否为 NIL,并在你的取消例程结束时明确地将其设置为 NIL。以防万一...