对于有些业务场景,需要根据某一个值决定报表打印几份。一个典型的例子就是产品装箱单或者产品标签。这种需求只需要写几行代码就可以实现,下面是一个例子:
模板格式如下:
该标签要根据数量后面的格子里的数值打印相应的份数。
步骤如下:
1、选中MasterData1栏
2、在左侧属性区选择“事件”
3、在“OnBeforePrint”和“OnAfterPrint”事件中双击
4、在左上角点击“代码”标签页,切换到代码编辑器
输入如下代码:
var
_count : Integer = -1; //打印份数计数值
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
if _count = -1 then _count := <mysale_sonhuodandetial."Amount1">; //如果计数值为-1表示主数据的新记录准备开始打印
end;
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
_count := _count - 1; //计数值减1
if _count < 1 then _count := -1; //如果计数值小于了,则表示该条记录已打印完成
if _count > 0 then Engine.ShowBand(MasterData1); //如果计数值还大于1,则表示份数还没打印完
end;
//下面两行不能删除
begin
end.
截图如下
5、预览结果: