报表做好数据源之后预览第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;
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;
在“退出”的Button里加入这一行,还是不行。
QuickReport做的报表
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.
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语句的操作场合。
而且没有必要同时使用。
前面加下QuickReport10.Prepare; 试下
ADOQuery1.ExecSQL;
这里换成
ADOQuery1.ExecSQL;
ADOQuery1.Active:=true;
QuickReport10是在File->New->Other->Report 中新建的。Form9是一个报表的条件窗口,点“预览”就弹出QuickReport10各位是用什么做报表。