打印统计问题(100分)

  • 主题发起人 主题发起人 fshrq1
  • 开始时间 开始时间
F

fshrq1

Unregistered / Unconfirmed
GUEST, unregistred user!
有100条记录,每页打印20条,要打印5页,每页的第21条统计前面20条记录的和,请高手
指教
 
qr or fr?
手工设计fast reprot方法
报表窗口如下
frdbdataset1 fr数据源 dataset设置为要显示的数据集
frreport1 fr报表
报表的的设计如下
band1,报表标题
band2,主项数据无数据源 
band3,主项数据 数据源为frdbdataset1
band4,栏目脚,用于显示合计数据
band5,子栏  ,用于不足行时补写空白行

procedure TForm1.frReport1ManualBuild(Sender: TfrPage);
//在frreport1中的onmanualbuild事件中手工设置报表项
var
i, j,k: Integer;
begin

k:=trunc(frdbdataset1.DataSet.RecordCount/8);
            //每页显示8行(行数可用变量),计算页数
Sender.ShowBandByType(btReportTitle);
//显示报表标题
for i := 0 to kdo
//循环打印每页
begin
Sender.ShowBandByName('Band2');
       //显示列头 (band2是一个主项数据,无数据源)
for j := 1 to 8do
//循环打印每行
begin
if not frdbdataset1.Eof then
begin
Sender.ShowBandByName('Band3');
      //显示主项数据 (band3是主项数据,数据源为frdbdataset1)
frdbdataset1.Next;
//显示下一条数据
end
else
sender.ShowBandByName('band5');
//显示空白行 (band5为child band)
end ;
//在实际的页面设计当中此处有一个栏目脚band 以显示合计
if i <> k then
Sender.NewPage;
//产生新页面
end;
end;

qr 简单的办法是,设置细band 的高度为(表高-页脚band高)/20
合计,就是qrexpr写 sum(XXX)
注意,resetafterprint这个属性,true表示每页单计,false表示以前到此页的累计
 
to dhl2001
在统计每一页有20条记录,我用count命令,count(id_person),提示'count-too many
arguments',如何解决
 
请dhl2001继续帮我解决,最后一个问题,分数立即奉上
 
to dhl2001
为何每隔三页才有数据,三页只有标题没有数据,急
 
是否有高手可以指教
 
真是太奇怪了,为什么第1页可以显示数据,第2,3,4页只有标题,没有数据,第5页又有
数据,如是循环,是不是与我的动态编程有关。
ptotal:array of tqrexpr;
ptotal[2*(j+1)+2]:=tqrexpr.create(PageFooterBand1);
ptotal[2*(j+1)+2].Parent:=PageFooterBand1;
ptotal[2*(j+1)+2].Expression:='SUM(shishou)';
在每页的最后一行统计上面行的和
 
高手啊!帮帮手啊!
 
>>有100条记录,每页打印20条,要打印5页,每页的第21条统计前面20条记录的和,请高手
>>指教
1.报表里放3个BAND,分别为页头,主项数据,页脚.
2.分别调整3个BAND的高度,使每页刚好能放下20条记录.
3.在页脚BAND中放一个Memo,里面的内容为:[sum([字段])];
 
sorry,sorry,
这两天家里有事,连续乘车1000公里,真是累死了,
来不及上网,
请多包涵,
能不能详细说说你的情况
 
多谢netatom,多谢dhl2001,我的情况就是第1页可以显示数据,第2,3,4页只有标题,
没有数据,第5页又有数据,在没有数据的页还没有显示表格,我在detail是有画表格的,
但没有显示,就是有数据就有表格,没有数据就没有表格,每页最后一行的统计只显示零,
但应该是有数才对,请多多指教
 
如果你的数据是直接送到打印机上的就简单了。。
 
打印前要先预览
 
是否已经没有人可以回答我了?
 
>>真是太奇怪了,为什么第1页可以显示数据,第2,3,4页只有标题,没有数据,第5页又有
>>数据,如是循环,是不是与我的动态编程有关。
>>ptotal:array of tqrexpr;
>>ptotal[2*(j+1)+2]:=tqrexpr.create(PageFooterBand1);
>>ptotal[2*(j+1)+2].Parent:=PageFooterBand1;
>>ptotal[2*(j+1)+2].Expression:='SUM(shishou)';
>>在每页的最后一行统计上面行的和
先把动态编程这一部分注释掉,运行一个,看看不就知道了.
另外,你这里只是一个Report,只需要在FooterBand上放一个QrExpr就行了,
看你的代码,每产生一页,FooterBand上就多一个QrExpr,不对吧?
而且在QuickRep里这样用数组好象也是不行的.原因我说不清楚,因为我以前
也曾经写过类似的代码,行不通.
这样不知行不:
var
ptotal:TQrExpr;
begin
ptotal := TQRExpr.Create(Form1);
^^^^^^
ptotal.Parent := FooterBand1;
with ptotaldo
begin
Name := 'QRExpr1';
Expression:='SUM(shishou)';
Size.Left :=XXX;
// 设置位置
Top := YYY;
Alignment := taRight;//右对齐
ONPrint := ExpPrint;
//设置ONPrint属性,如果需要的话
end;
end;
最后程序关闭的时候,记得把它Free掉.
 
我的ptotal数是不定的,要根据要统计的项来动态生成。
 
另一问题:
我的打印是套打,打印的行数要和客户提供的单的行数一样,是5行,但我打印的行数只有4行,使
页脚的位置往上移,位置错了,如何使我打印的行数也是5行
 
调整一下各个Band的高度不行吗?
 
请问Band的Bandtype设成什么?
 
一张表里可以有好几种的BAND呀.
PageHeader,
ColumnHeader,
Detail,
PageFooter...
设置好Band的size.hight属性,你就可以比较准确地
控制打印的位置了.
 
后退
顶部