报表做好数据源之后预览第1次有数据出来,关掉后,相同的查询条件,第二次就不出数据了.
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 计数设置,车间效率 where 计数设置.计数编号=车间效率.编号');
ADOQuery1.SQL.Add('and 生产时间 between :DateTimePicker1 and :DateTimePicker2');
ADOQuery1.Parameters.ParamByName('DateTimePicker1').Value:=formatDateTime('yyyy-MM-dd hh:mm:ss',DateTimePicker1.DateTime);
ADOQuery1.Parameters.ParamByName('DateTimePicker2').Value:=formatDateTime('yyyy-MM-dd hh:mm:ss',DateTimePicker2.DateTime);
ADOQuery1.Open;
QuickReport10.Preview;

解决方案 »

  1.   

    ADOQuery1.Active:=False;
    在“退出”的Button里加入这一行,还是不行。
    QuickReport做的报表
      

  2.   

    unit Unit9;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, QRCtrls, QuickRpt, ExtCtrls, DB, ADODB,
      Grids, DBGrids, RpCon, RpConDS, RpBase, RpSystem, RpDefine, RpRave;type
      TForm9 = class(TForm)
        Label1: TLabel;
        Panel1: TPanel;
        Label3: TLabel;
        DateTimePicker1: TDateTimePicker;
        DateTimePicker2: TDateTimePicker;
        Label6: TLabel;
        ComboBox1: TComboBox;
        Label4: TLabel;
        Edit1: TEdit;
        Label2: TLabel;
        Panel2: TPanel;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure ComboBox1DropDown(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form9: TForm9;implementation{$R *.dfm}
    uses unit10;
    procedure TForm9.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    action:=cafree;
    ADOQuery1.Active:=False;
    end;
    procedure TForm9.ComboBox1DropDown(Sender: TObject);
    var
      grp:string;
    begin
      ComboBox1.Clear;
      with ADOQuery1 do
      begin
      close;
      sql.Clear;
      sql.Add('select * from gp');
      open;
      first;
      while not eof do
      begin
      grp:=fieldbyname('gp_name').Value;
      Combobox1.Items.Add(grp);
      next;
      end;
      end;
      end;
    procedure TForm9.FormCreate(Sender: TObject);
    begin
    DateTimePicker1.DateTime:=now();
    DateTimePicker2.DateTime:=now();
    end;procedure TForm9.Button3Click(Sender: TObject);
    begin
    close;
    end;procedure TForm9.Button1Click(Sender: TObject);
    var
      ftim,ttim:string;
    begin
    ftim:=datetimetostr(DateTimePicker1.DateTime);
    ttim:=datetimetostr(DateTimePicker2.DateTime);
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from 计数设置,车间效率 where 计数设置.计数编号=车间效率.编号');
    ADOQuery1.SQL.Add('and 生产时间 between :DateTimePicker1 and :DateTimePicker2 and 组别=:zb and 款号 like :kh');
    ADOQuery1.Parameters.ParamByName('DateTimePicker1').Value:=formatDateTime('yyyy-MM-dd hh:mm:ss',DateTimePicker1.DateTime);
    ADOQuery1.Parameters.ParamByName('DateTimePicker2').Value:=formatDateTime('yyyy-MM-dd hh:mm:ss',DateTimePicker2.DateTime);
    ADOQuery1.Parameters.ParamByName('zb').Value:=Trim(ComboBox1.Text);
    ADOQuery1.Parameters.ParamByName('kh').Value:=Trim(Edit1.Text);
    ADOQuery1.Active:=true;
    ADOQuery1.ExecSQL;
    QuickReport10.Preview;
    end;procedure TForm9.Button2Click(Sender: TObject);
    begin
    QuickReport10.Print;
    end;end.
      

  3.   

    procedure TForm9.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      ADOQuery1.Close;//不写也可以
      action:=cafree;
      Form9 := nil;//否则你第二次调用会出错。
    end; procedure TForm9.Button1Click(Sender: TObject);
    var
      ftim,ttim:string;
    begin
    ftim:=datetimetostr(DateTimePicker1.DateTime);
    ttim:=datetimetostr(DateTimePicker2.DateTime);
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from 计数设置,车间效率 where 计数设置.计数编号=车间效率.编号');
    ADOQuery1.SQL.Add('and 生产时间 between :DateTimePicker1 and :DateTimePicker2 and 组别=:zb and 款号 like :kh');
    ADOQuery1.Parameters.ParamByName('DateTimePicker1').Value:=formatDateTime('yyyy-MM-dd hh:mm:ss',DateTimePicker1.DateTime);
    ADOQuery1.Parameters.ParamByName('DateTimePicker2').Value:=formatDateTime('yyyy-MM-dd hh:mm:ss',DateTimePicker2.DateTime);
    ADOQuery1.Parameters.ParamByName('zb').Value:=Trim(ComboBox1.Text);
    ADOQuery1.Parameters.ParamByName('kh').Value:=Trim(Edit1.Text);
    ADOQuery1.Active:=true;
    ADOQuery1.ExecSQL;

    ADOQuery1.Open;
    QuickReport10.Preview;
    end; //注意:ADOQuery1.Open适用于返回带有数据集的场合
    ADOQuery1.ExecSQL;适用于不返回数据集,一般用于执行insert, update,delete等SQL语句的操作场合。
    而且没有必要同时使用。

      

  4.   

    SmallHand:改过来了,还是不行.有人是这样说的:QuickReport10,这个预览,关掉后有没有释放出来
      

  5.   

    n久没有用quickreport了,你看看相关帮助或者看看他的demo是怎么写的!
      

  6.   

    QuickReport10.Preview; 
    前面加下QuickReport10.Prepare; 试下
      

  7.   

    ADOQuery1.Active:=true; 
    ADOQuery1.ExecSQL; 
    这里换成
    ADOQuery1.ExecSQL; 
    ADOQuery1.Active:=true; 
      

  8.   

    難道是你的QuickReport版本有問題???
      

  9.   

    Delphi 7,自带的QuickReport。
    QuickReport10是在File->New->Other->Report 中新建的。Form9是一个报表的条件窗口,点“预览”就弹出QuickReport10各位是用什么做报表。