with Reclist^.adocon do
  begin
    Reclist^.adocon.LoginPrompt := false; 
    ConnectionString :='......';
    Reclist^.adocon.Connected := false;
    Reclist^.adocon.ConnectionString := ConnectionString;
    try
      begin
        Reclist^.adocon.Connected := true;
        Result := true;
      end;
    except
        showmessage('catch database fail');
        Result := false;
    end;
以上代码省略了ConnectionString。
在正常情况下可以连接上数据库,但在网络故障的情况下,除了跳出“catch database fail”对话框外,还会出现一个很讨厌的“Connection fail”或者“连接失败”的对话框。请问怎么把这个“连接失败”的框去掉?

解决方案 »

  1.   

    还有这个对话框
    "[DBNETLIB][Connectionopen(connect())].sql sever 不存或拒绝访问。"
      

  2.   

    不是在Delphi里面运行的,直接双击exe运行的
      

  3.   

    为了减少对connection的占用,我在每次查询前,重新建立connection,
    这段代码就是用来重新建立connection的
      

  4.   

    with Reclist^.adocon do
      begin
        Reclist^.adocon.LoginPrompt := false; 
        ConnectionString :='......';
        Reclist^.adocon.Connected := false;
        Reclist^.adocon.ConnectionString := ConnectionString;
        try
          begin
            Reclist^.adocon.Connected := true;
            Result := true;
          end;
        except
       on OLEException do
           begin
            showmessage('catch database fail');
            Result := false;
           end;
        end;
    需要捕获异常才能屏蔽掉系统的基类异常处理,另外连接失败的错误好象是OLEException类的,记得调试的时候错误信息里也是这个类的。但好象实际上捕获不到,这样就只能用exception了,把OLEException改成Exception是一定能捕获的,但oleexception不能保证,你自己看具体情况办好了。
      

  5.   

    楼上的大哥,这个办法我试过了
    用On EOleException do
    和on Exception do
    还是那样
      

  6.   

    你单步跟踪一下,看看是不是在这里
    Reclist^.adocon.LoginPrompt := false; 
        ConnectionString :='......';
        Reclist^.adocon.Connected := false;
    就已经出问题了。
      

  7.   

    是别的地方代码的问题,sorry,sorry