这是delphi的一个bug。删掉控件,重新来过基本上就没问题了。

解决方案 »

  1.   

    Form2.Query1.Close; //要养成Close的习惯
    Form2.Query1.SQL.Clear;
    Form2.Query1.SQL.Add('select * from agent');
    Form2.Query1.SQL.Add('where agent_id='''+Edit1.Text+'''');
    Form2.Query1.Open;
    再执行:
    Form2.Query1.Close; //要养成Close的习惯
    Form2.Query1.SQL.Clear;
    Form2.Query1.SQL.Add('select * from agent');
    Form2.Query1.Open;
      

  2.   

    是用那个後端sql server.试试  
    Query1.sql.add(....);
    Query1.prepare;
    Query1.open;
    .....
    Query1.unprepare; <<----- 把後端预先为Query1编译的sql也清除.
    Query1.close;Query1.sql.clear;
    Query1.sql.add(...);
    ....
      

  3.   

    对阿
    要记住用close要不会出错的
    不用close
    她会接着上次的sql语句
      

  4.   

    在delphi5的ado中遇到过,我升了delphi,当然也可控件打补丁zswang(伴水)(准备去流浪)说的对
      

  5.   

    还是CLOSE的问题
    能不能尝试用用事务
      

  6.   

    对,一定要在第二次使用前close掉,然后重新open
    ***Form2.Query1.SQL.Close;
    Form2.Query1.SQL.Clear;
    Form2.Query1.SQL.Add('select * from agent');
    Form2.Query1.SQL.Add('where agent_id='''+Edit1.Text+'''');
    Form2.Query1.Open;
    再执行:
    ***Form2.Query1.SQL.Close;
    Form2.Query1.SQL.Clear;
    Form2.Query1.SQL.Add('select * from agent');
    Form2.Query1.Open;
    并且记住最后用完query1之后还要:
    Form2.Query1.Close;
      

  7.   

    看来地球人都知道,要修改sql语句,你就必须先Close。