我第一次执行
adoquery1.open 成功,并且没有错误。
让程序用定时间自动每分钟查询一次,结果第二次它就出错了
出错提示为:
project update.exe raised exception class EOLeException with message '连接失败'. Process stopped.Use Step or Run to continue.这是怎么回事?应该如何处理让它继续执行SQL查询?

解决方案 »

  1.   

    在你的代码执行sql语句之前加
    adoquery1.Close;
    adoquery1.sql.clear;
      

  2.   

    你查询的表有主键吗?
    数据连接组件设置如何?ADOConnection
    其他代码如何?
      

  3.   

    我第一次执行 
    adoquery1.open   成功,并且没有错误。 
    让程序用定时间自动每分钟查询一次,结果第二次它就出错了 
    出错提示为: 
    project   update.exe   raised   exception   class   EOLeException   with   message   '连接失败'.   Process   stopped.Use   Step   or   Run   to   continue. 
    这是怎么回事?应该如何处理让它继续执行SQL查询?
    -----------------
    你说的可能是这样的情况:如果数据比较大的话,SQL语句还执行完,可能系统已经第二命令启动了,,,所以这里应该添加一个判断机制或其它东西判断一下,,
      

  4.   

    open之前判断ADOConnection.connected是否=true
      

  5.   

    你的Timer 里执行的代码可能还没执行完  1.5 秒太短了     放大点试一试  ~  还有 数据库连接最好是通过 TADOCOnnection 来连接  !   ADOConnection对连接有管理功能
      

  6.   

    在Timer的里面先执行Enabled:=false;然后执行你的事件后再Enabled:=true;
      

  7.   

    application.ProcessMessages;
    试一下
      

  8.   

    在Timer的里面先执行Enabled:=false;然后执行你的事件后再Enabled:=true;
    在处理事件中,判断数据库是否联接正常,不正常重新联接数据库。
      

  9.   

    或是在定定时器事件里设一个断点,每1.5秒就是那停一下,再F9,要是没有出错了,那么就可能是时间太短   
    了,数据还没有处理完.====同意qkhhxkj102 观点
      

  10.   

    可以这样.
    先定义一个Boolean弄的变量.
    默认为false;var
      k:boolean;
    procedure aaaa
    begin
      if k then
      begin
         k := false;//关门
          分析查询....
         k := True;  //开门
      end
    end只要查询没有处理完,就会自动的不重新进行查询.待一下次再询问的时候,如果结束了才重新进行一次查询.