我做的是数据库程序,用的是SQL2000+DELPHI7.0,报表是自带的QRT报表。
在一个窗体中用两个ADOQuery做查询,打印时打印两个ADOQuery的内容。
其中,打印ADOQuery1一个字段内容,打印ADOQuery2的所有内容。
第一次打开查询窗体时,能够能结果进行正常打印,关闭查询窗体,再打开时,打印的内容总是第一次关闭查询窗体前的内容。不对当前查询结果进行打印。
查询:
ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select * from table1 where id='''+Trim(Edit1.text)+'''');
ADOQuery1.open;
在报表窗体里是直接连的这个窗的ADOQuery1
打印窗体调用是对象调用  
var TmpForm:TRForm1;
begin
TmpForm:=TRForm1.Create(self);
TmpForm.QuickReport.PreviewModal;
end;

解决方案 »

  1.   

    FASTREPORT报表是要清空的,QRT报表我不知道要不要清空的
    不过你为什么要用窗体打开的时候查询呢?弄个按钮不是更好?
      

  2.   

    我知道了
    你是不是写在ONFORMSHOW里?这样的话问题是你关闭窗体时没有释放窗体的原因,也就是说你关闭的窗体只是隐藏起来了,你还是不要写在FORM的SHOW事件里,弄个按钮就行了
      

  3.   

    我是在一个窗体的查询按钮中进行查询,打印按钮中进行打印。
    在QuickRep1里连接ADOQuery
      

  4.   

    我是在一个窗体的查询按钮中进行查询,打印按钮中进行打印。
    在QuickRep1里连接ADOQuery
      

  5.   

    var TmpForm:TRForm1;
    begin
    TmpForm:=TRForm1.Create(self);
    TmpForm.QuickReport.PreviewModal;'
    TmpForm.Free ;  //增加一个释放试试
    end;
      

  6.   

    不好使呀,那个我早就试了。我试过 form.action.free,tmpform.free,form.quickreport.free;
    试过把adoquery关了再打开,把adoconnection关了,再打开,form.QuickReport.refresh,form.destroy
      

  7.   

    看一下ADOQuery2在哪儿打开,有没有关闭
      

  8.   

    是不是没有设他的DASET哦?要设一个哦。嘿嘿。
      

  9.   

    有没有人遇到过我这样的问题呀,我还以为只要不是世界尖端的大问题,在这里都能解决呢。真是没办法,这里有没有DELPHI高手呀。还是高手都不上CSDN或是不屑于回答我这样的问题。