使用delphi里的Adoquery组件直接连远程数据库的时候,由于是远程访问所以在调用open之后,程序一直卡在open那一行,直到把数据检索完毕,提交数据时也是一样。我现在是把ADO放到了子线程中,这样界面不会死掉,但是客户要求的是如果open或是提交操作的时间很长,可以取消这样的操作。我遍查资料也找不到什么方法可以取消查询或提交操作,因为ADO在open之后就卡那了,没有接口可以去接着操作它,各位有什么办法可以撤销吗?

解决方案 »

  1.   

    你沒有必要在open的時候一次性把所有數據都取出來啊,取一部份顯示出來嗎,這樣不影響速度,然後你需要修改哪些數據你就把這些數據查詢過濾出來
      

  2.   

    看到你提到子线程。多线程中用到ADO时,要每个线程单独创建一个ADO连接。不能共用一个。
      

  3.   

    没有共用,只是子线程自己在用ADO
      

  4.   

    试试Adoconnection在子线程里面创建,用完后释放。另外,取消查询好像做不到。。楼主不要放弃,可能是我孤陋寡闻
      

  5.   

    点击“撤销”按钮时直接把那个Thread给干掉!
      

  6.   

    判斷Adoquery.State=dsOpening,就Adoquery.Cancel;
      

  7.   

    请教各位,如果我在线程中创建ADO,创建完后我执行Open,这样线程会卡到那,卡住后我把该线程强制干掉,那么ADO会自动停止释放吗?