我在做一程序时,用到了TIMER控件定时扫描数据库SQL SERVER(1秒),但是中间执行时间有时不止一秒,我就在TIMER的ONTIMER时间中写了这么一段
TRY
TIMER.ENABLE:=FALSE
FINALLY
TIMER.ENABLE:=TRUE
这样解决了上一次数据库操作还未结束,下一次操作有进来的问题。
现在我想问的是:我在TRYFINALLY中用ADO访问,但是如果在一次查询数据库的时候,由于数据量大(40万条数据),时间耗费比较多(1分钟左右),我的整个界面就好象死了一样,没有反映了。我怎么办?
再说一下,数据库操作也在TRYFINALLY中进行!!

解决方案 »

  1.   

    用了
    不过现在问题不是在这里,我发现主要是在执行ADOQUERY。OPEN时,由于数据量大,一直在查询,等待的时间比较长,因此导致程序无法响应,我想有没有办法在这段时间对前端界面进行重画!
      

  2.   

    检测代码还是用线程好,比Timer省很多系统资源
      

  3.   

    1.不需要的数据就不要查询出来
    2.可以做个进度条或等待提示什么的
    3.在这种情况下避免重绘,用多线程的话用sync...具体的方法忘了,意思是在主线程中进行操作从了避免了VCL未考虑多线程操作的问题。
      

  4.   

    open的时候
    掌握好打开的数据量·!!!
    packetrecords:=10
    默认的开始:10条数据。如果需要点:nextpacket!!