sql语句好象没有问题,你的错误好象是ado的问题,是delphi5吗,要下载补丁

解决方案 »

  1.   

    ADO的问题,Delphi5要打ADOupDate2补丁,Delphi6要打Update2补丁。
      

  2.   

    是ADO的问题,可以在程序中适当位置查询后添加一条语句:
      if ADOQuery.eof or ADOQuery.bof then Adoquery.first 
    试一试吧,不知行不行
      

  3.   

    试一试下面的代码:
    var
      str:string
    begin
      str:='select * from b1 where mc like ''%'+trim(edit1.text)+'%''''
      with adoquery1 do
        begin
          adoconnection1.connected:=true;
          close;
          sql.clear;
          sql.add(str);
          try
            excesql;
          except
            showmessage('数据库连接不成功');
        end;
        showmessage('数据库连接成功');
    end;
      

  4.   

    加个if语句判断应该不会错了:
    if adoquery1.active then
    begin
       if adoquery1.eof and adoquery1.bof then
          adoquery1.recordset.close;
    end;
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('select * from b1');
    adoquery1.sql.add('where mc like ''%'+trim(edit1.text)+'%''');
    adoquery1.Open;
      

  5.   

    我用的是Delphi6+Update2补丁,没有这种错误!
      

  6.   

    cookieyfeng(怪癖幽魂) 说的有道理,有不足的地方,万一有空格怎么办?
    cookieyfeng(怪癖幽魂) 也有道理,可是,万一在字符串中间有空格怎么办?
    所以,要对Edit1进行检测,用到onKeyPress事件。
    具体怎么办,查一下帖子就ok!
      

  7.   

    错了,不好意思
    cookieyfeng(怪癖幽魂) 说的有道理,有不足的地方,万一有空格怎么办?
    manmanchong(事实证明:智商为0) 也有道理,可是,万一在字符串中间有空格怎么办?
    所以,要对Edit1进行检测,用到onKeyPress事件。
    具体怎么办,查一下帖子就ok!
      

  8.   

    查询语句本身没有错,这好像是delphi的一个bug,没有记录的时候要先关闭recordset,这样就不会有错误,这个问题我原来碰到过,在adoquery1.close之前,先把recordset关闭。问题就能解决。
      

  9.   

    d5 ado de  bug. update you delphi ado.
      

  10.   

    下载补丁吧,如过在delphi6中运行代码没有问题,
      

  11.   

    应该是D的不足
    你把两句合成一句试试
    我以前也遇到过同样的错误
    adoquery1.sql.add('select * from b1 where mc like ''%'+trim(edit1.text)+'%''');
      

  12.   

    你的代码没有错,不过query1.prepare加上以后可以提高程序的执行效率。
    你的ADO没有加补丁,下载一个补丁吧。
      

  13.   

    用参数比较好吧,
    adoquery1.sql.add('select * from b1 where mc like :v_name);
    Parameters.ParamByName('V_Name').value:='%'+trim(edit1.text)++'%';
    Open;
    ...
    close;
      

  14.   

    edit1.text为空时出错,那先判断!
      

  15.   

    不是为空时出错,而是在查不到记录后,再添加删除EDIT1.text时出错,按manmanchong的方法倒是没有错误提示了,但DBGRID为空了,看来这着不行,
    请问下载补丁地址在哪?
    我没想到有这么多人响应,看来给分少了,不好意思.
      

  16.   

    呵呵,你再是是这样可以吗:
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('select * from b1');
    adoquery1.sql.add('where mc like ''%'+trim(edit1.text)+'%''');
    adoquery1.Open;
    if adoquery1.eof and adoquery1.bof then
    begin
       adoquery1.recordset.close;
       adoquery1.close;
    end;
      

  17.   

    我碰到过这个情况
    就是ADO的问题
    如果你要用ADO
    要么下载补定要么在FORMCLOSE事件里加入
    ADOQUER1。CLOSE;