gpt4 book ai didi

delphi - 取消后重用 ADOQuery

转载 作者:行者123 更新时间:2023-12-03 15:26:35 25 4
gpt4 key购买 nike

我在 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)并再次运行它?

尼姆斯

最佳答案

认为您的问题可能出在查询的 Connection 对象上。

AdoConnection 有一个 Errors 集合,它记录发生的每个 ADO 错误的详细信息。 Iirc,此集合作为使用 AdoConnection 遇到执行错误的对象进行累积,直到您在 Errors 接口(interface)上调用 Clear 为止。取消查询执行可能会导致下次执行时出现错误。

因此,在尝试重新使用 AdoQuery 之前,请尝试以下操作:

myAdoQuery.Connection.Errors.Clear;

并告诉我们您的进展如何。

此外,如果我是您,我会在尝试重新打开 AdoQuery 的 RecordSet 之前测试它是否为 NIL,并在取消例程结束时将其显式设置为 NIL。以防万一...

关于delphi - 取消后重用 ADOQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58660766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com