各位大神:
在delphi不同窗体中调用dm中的adoquery,不同的窗体执行不同的SQL代码该怎么实现呢?我在一个窗体关闭时,将adoquery.sql.clear 也没有用,不active 也没用。另一个窗体打开时显示的数据还是原来的窗体中adoquery 中的sql代码结果,问问各位大神该怎么解决?

解决方案 »

  1.   


    {dm单元:}
    with adoquery1 do
    begin
      close;
      sql.text:='select * from table';  {不同功能,使用不同的sql语句}
      open;
    end;
      

  2.   

    没有理解,这样子我在窗体中如何调用呢?主要是一个窗体执行完后数据不知道怎么释放掉,然后下一个窗体show 时就要出错。
      

  3.   

    一个窗体一个query吧, 不要共用了!!!
      

  4.   

    dm中可以建立两个过程调用,比如:
    public 
      procedure TS1;
      begin
         with adoquery1 do
         begin  
            close;   
            sql.text:='select * from table1'; 
           open; 
        end;
      end;
     procedure TS2;
      begin
       with adoquery2 do
         begin  
            close;   
            sql.text:='select * from table2'; 
           open; 
        end;
      end;  窗体1调用TS1,窗体2调用TS2。
     窗体show:直接建立的窗体随主窗体一起启动,关闭时并未释放资源。
     窗体showmodal:动态建立的窗体,关闭时释放资源。
      

  5.   


    这样总感觉程序启动好慢啊。我原来就是一个窗体一个query,后面搞成一个query,感觉速度快多了。
      

  6.   


    这只是2个窗体啊,我差不多有20个窗体要调用啊,会不会太麻烦了。

    那要看你的窗体是show还是showmodal了,建议采用showmodal,这样一个adoquery就解决了,如果是show的话,20多个窗体都在软件启动的时候加载不仅执行文件大而且启动也很慢的。
      

  7.   

    看看dpr文件, 启动窗体设成主窗体一个!!所有query默认active设为false, 需要时再打开!
      

  8.   

    1、定义一个公共的ADO连接单元;
    2、其它Form单元加入USES该单元;
    3、在Form中使用DBGrid与DataSource关联
    4、使用SQL语句读写数据库。
      

  9.   

    一个窗体一个adoquery,默认时窗体不生成,需要时再生成。adoquery默认不打开,再需要时再打开。
    这样,一个窗体打开时,最多也就用2、3秒了。
      

  10.   

    如果窗体中有数据绑定控件,还是一个窗体一个adoquery的好,但要记住,窗体关闭时一定要adoquery.close,这是个好习惯,不会慢的,如果这是用来执行命令,可以共用,写一个公共的过程就好了
      

  11.   

    建立一个公用的单元文件,在窗体引用就行。
    记得主窗体建立的时候进行初始化就行.uses
      myQuerys;......begin
       myQuery1.close;
      myQuery1.SQL.Text:=sSQLText;
      myQuery1.Open;
      aControl.DataSet:=myQuery1;
      .....
    end;
      

  12.   

    要Close
      

  13.   

     with dm.qry1 do begin
       close;
       sql.clear;
       sql.add('');  //你需要的SQL
       open;
      end;