2013-01-12 139 views
2

用Delphi 7和ClientDataSet的提供商,AdoQuery框架之前如何关闭/取消ClientDataSet的,反正是有检索所有记录之前取消查询。我希望用户有取消查询的选项,如果它需要太多的时间,并更改参数,然后再试一次....检索所有记录

+0

它看起来像这个问题以前有人问(也许不是在这里),如果我谷歌“德尔福(中断或取消)查询”。也许这有助于 –

+0

我花了几个小时来搜索它。这是问了很多次,但我无法找到工作的答案...我只是想知道是否有任何方法或东西,我可以打电话取消查询... – ssnkh

+0

也许解雇你的查询关在单独的线程?然后,用户中止将忽略线程结果。您的查询必须能够并发运行(不应该成为大多数数据库的问题),并且数据库性能会受到影响,因为在执行修改的查询时,被放弃的查询仍在运行。 –

回答

0

你应该首先决定什么是“太长”为您服务。例如,假设它是120秒。设置TADOQuery.CommandTimeout(或者你用什么),以120。现在,如果执行命令(可能你的情况选择)将花费超过120秒,那么你得到具体的异常,你可以做你想做的(显示信息给用户,更改查询的参数,...)。 如果连接到服务器可能需要很长时间,则可以对TADOConnection.ConnectionTimeout属性进行相同操作。