小弟在用quickreport动态生成(输入条件查询,将查询结果返应到报表中)报表时遇以下问题:望各位热心朋友帮忙。
1、如查询到有多条记录时,报表中只显示第一条记录(用QRDBTEXT控件)。
2、报表的列标题显示不出来。(用QRLABEL控件)
3、如何显示当前预鉴的是第几页,共几页。
代码如下:(提供条件的输入窗体:printsqsetform,报表显示窗体:sqreportform)。通过输入相应条件并按SPEEDBUTTON2来显示所要的报表
procedure Tprintsqsetform.SpeedButton2Click(Sender: TObject
begin
inherited;
try
application.CreateForm(tsqreportform,sqreportform);
except
messagedlg('´´½¨´°Ìåʧ°Ü£¡',mterror,[mbok],0);
exit;
end;
with adoquery1 do
begin
connectionstring:=cnnstr;
close;
sql.Clear;
sql.Add('select a.cid as cid,b.hname as hname,a.rightscode as rightscode ,');
sql.Add('a.rigd as rigd,a.rigto as rigto,a.dqdate as dqdate,a.memo as memo ');
sql.Add(' from userrights as a left join clientinfo as b on (a.cid=b.cid) where ');
if edit1.Text<>'' then sql.Add(' b.hname like ''%''+'''+trim(edit1.Text)+'''+''%'' and ');
sql.Add(' a.rigd>='''+formatdatetime('yyyy-mm-dd',datetimepicker1.DateTime)+''' and ');
sql.Add(' a.rigd<='''+formatdatetime('yyyy-mm-dd',datetimepicker2.DateTime)+'''');
sql.Add('order by rigto');
open;
showmessage(inttostr(recordcount));
sqreportform.QRDBText1.DataSet:=adoquery1;
sqreportform.QRDBText2.DataSet:=adoquery1;
sqreportform.QRDBText3.DataSet:=adoquery1;
sqreportform.QRDBText4.DataSet:=adoquery1;
sqreportform.QRDBText5.DataSet:=adoquery1;
sqreportform.QRDBText6.DataSet:=adoquery1;
sqreportform.QRDBText7.DataSet:=adoquery1;
sqreportform.QRDBText1.DataField:='cid';
sqreportform.QRDBText2.DataField:='hname';
sqreportform.QRDBText3.DataField:='rigd';
sqreportform.QRDBText4.DataField:='rightscode';
sqreportform.QRDBText5.DataField:='rigto';
sqreportform.QRDBText6.DataField:='dqdate';
sqreportform.QRDBText7.DataField:='memo';
end;
sqreportform.QuickRep1.Preview;
sqreportform.show;
end;为了解决以上两个问题该怎么做。谢谢帮助。
1、如查询到有多条记录时,报表中只显示第一条记录(用QRDBTEXT控件)。
2、报表的列标题显示不出来。(用QRLABEL控件)
3、如何显示当前预鉴的是第几页,共几页。
代码如下:(提供条件的输入窗体:printsqsetform,报表显示窗体:sqreportform)。通过输入相应条件并按SPEEDBUTTON2来显示所要的报表
procedure Tprintsqsetform.SpeedButton2Click(Sender: TObject
begin
inherited;
try
application.CreateForm(tsqreportform,sqreportform);
except
messagedlg('´´½¨´°Ìåʧ°Ü£¡',mterror,[mbok],0);
exit;
end;
with adoquery1 do
begin
connectionstring:=cnnstr;
close;
sql.Clear;
sql.Add('select a.cid as cid,b.hname as hname,a.rightscode as rightscode ,');
sql.Add('a.rigd as rigd,a.rigto as rigto,a.dqdate as dqdate,a.memo as memo ');
sql.Add(' from userrights as a left join clientinfo as b on (a.cid=b.cid) where ');
if edit1.Text<>'' then sql.Add(' b.hname like ''%''+'''+trim(edit1.Text)+'''+''%'' and ');
sql.Add(' a.rigd>='''+formatdatetime('yyyy-mm-dd',datetimepicker1.DateTime)+''' and ');
sql.Add(' a.rigd<='''+formatdatetime('yyyy-mm-dd',datetimepicker2.DateTime)+'''');
sql.Add('order by rigto');
open;
showmessage(inttostr(recordcount));
sqreportform.QRDBText1.DataSet:=adoquery1;
sqreportform.QRDBText2.DataSet:=adoquery1;
sqreportform.QRDBText3.DataSet:=adoquery1;
sqreportform.QRDBText4.DataSet:=adoquery1;
sqreportform.QRDBText5.DataSet:=adoquery1;
sqreportform.QRDBText6.DataSet:=adoquery1;
sqreportform.QRDBText7.DataSet:=adoquery1;
sqreportform.QRDBText1.DataField:='cid';
sqreportform.QRDBText2.DataField:='hname';
sqreportform.QRDBText3.DataField:='rigd';
sqreportform.QRDBText4.DataField:='rightscode';
sqreportform.QRDBText5.DataField:='rigto';
sqreportform.QRDBText6.DataField:='dqdate';
sqreportform.QRDBText7.DataField:='memo';
end;
sqreportform.QuickRep1.Preview;
sqreportform.show;
end;为了解决以上两个问题该怎么做。谢谢帮助。
sqreportform.DataSet := adoquery1;