qry.Close;//此处不报错
    qry.SQL.Text:= 'xxx';
  qry.ExecSQL;  if Application.MessageBox('xxx','',MB_YESNO) = IDYES then
  begin
    qry.Close;//此处报错
    qry.SQL.Text:= 'xxx';
    qry.ExecSQL;
  end;跟踪了一下,发现在Application.MessageBox 时,qry被清掉了
这些代码以前都是正常运行的,请教一下,是何种问题?

解决方案 »

  1.   

    qry.Close;//此处报错
    这个是没有问题的啊,把CLOSE放到前面去看看,,应该是哪里代码出了问题,
      

  2.   

    qry.Close;//此处不报错
      qry.SQL.Text:= 'xxx';
      qry.ExecSQL;  if Application.MessageBox('xxx','',MB_YESNO) = IDYES then
      begin
      qry.Close;//此处报错
      qry.SQL.Text:= 'xxx';
      qry.ExecSQL;
      end;这两个代码是相连的?还是不是完整代码?
      

  3.   

    在代码里面铺天盖地的搜索qry,
    目的是检测是否有其他地方也在用这个qry,然后不小心清掉了SQL.Text。
    神秘的消失了,一定是有原因的嘿嘿
      

  4.   

    或许是AfterEdit那类代码导致SQL语句消失的
      

  5.   

    如果只是执行SQL语句,只要这样做:
    qry.sql.clear;
    qry.sql.text:='';
    qry.execsql;如果打开是表
    qry.sql.close;
    qry.sql.clear;
    qry.sql.text:='';
    qry.open;
      

  6.   

    没有结果集返回的sql,不用close
      

  7.   

    qry.Close;这个语句应该是没有问题的,一个QRY是可以调用多次CLOSE的不过qry.ExecSQL;确实没执行打开数据集,所以执行qry.ExecSQL;
    状态应该还是CLOSE的
      

  8.   

    加上一个if qry.active then qry.close;呢
      

  9.   

    事实上在application.messagebox后,调用任何控件都报错!
    但是,在qry前加上 form.qry.close; 就不报错了。
    怀疑delphi7或者第三方控件有问题。
      

  10.   

    是你代码有问题,不是D有bug这段代码看不出错误,是不是还有其它的代码...
      

  11.   

    是application.messagebox报错吧?是被with语句包起来的吧?
      

  12.   


    没有包什么代码,就是简单的一个click事件:procedure TForm.btnClick(Sender: TObject);
    begin
      inherited;
    if Application.MessageBox(PChar('  xxxx  '),'',MB_YESNO) = IDYES then
      begin
        qry.Close;
        qry.SQL.Text:= 'xxx';
        qry.ExecSQL;
      end;
    end;我新建一个工程,模仿这些写法,不会报错
      

  13.   

    问题描述得不完整啊,是不是还有时钟、线程什么的操作了那个qry?
      

  14.   

    现在就是不清楚,为什么application.messagebox时,使用qry不能访问控件,而要用form2.qry才能访问?是继承有问题吗?谁能给点debug的头绪??
      

  15.   

    汇报一点情况。
    自己建的工程,在application.messagebox 时f7,直接跳确认框。
    出错的老工程,在application.messagebox 时f7,跳到vcl\forms.pas,可以跟踪。这是啥原因??
      

  16.   

    一点点的删除代码试试,找到出问题的那一行。
    “跳到vcl\forms.pas”帮助不大。
      

  17.   

    在工程里面新建一个页面,只放一个BUTTON和一个ADOQUERY,同样有这个错误。
    而在新工程中同样的页面,是没有错误的。
      

  18.   

    问题解决了,是工程指定的search path不对。
    谢谢各位参与。