fastreport 打印问题(100分)

  • 主题发起人 主题发起人 my_yes
  • 开始时间 开始时间
M

my_yes

Unregistered / Unconfirmed
GUEST, unregistred user!
每页打印固定的行,不够行则打印空,如每页6行,不够则打空但还有行数
 
手工设计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/6);
            //每页显示8行(行数可用变量),计算页数
Sender.ShowBandByType(btReportTitle);
//显示报表标题
for i := 0 to kdo
//循环打印每页
begin
Sender.ShowBandByName('Band2');
       //显示列头 (band2是一个主项数据,无数据源)
for j := 1 to 6do
//循环打印每行
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;
 
不用这么麻烦吧?FastReport里不是有个"自动追加空行"的功能吗?
选"主项数据"按右键就看到了.
 
但是,你一旦指定了MASTER DATA的数据源为FRDBDATASET1,数据记录就被锁死了。楼上的兄弟,如果你可以更改,说说你的详细实现。
再有,上面的代码是一个实现方式,还有另外的实现,就是通常的向数据库加空记录,然后清除。都可以。
 
关注这个问题,
 
后退
顶部