康虎云报表根据表中字段动态打印份数(单数据表的情况)

admin 7月前 45147

之前讲过一个根据报表数据中某个字段值来设置打印份数的问题(https://bbs.khcloud.net/?thread-622.htm),那个案例中是一个主从表结构,实现起来脚本更复杂一些,今天有个用户要实现单数据表根据字段打印多页要求。


处理方式跟主从表差不多,先看一下效果:


模板如下:


实现步骤:

一、在模板中增加一个栏尾栏(CoolumnFooter),高度设置为0,该栏只是用来辅助用,不显示,所以设置高度为0


二、在栏尾栏的”OnAfterPrint“事件函数中填写如下代码:

procedure ColumnFooter1OnAfterPrint(Sender: TfrxComponent);
begin
  // 填写的代码 开始

  _count := _count - 1;               //每打印一页,计数器减一        
  if _count >= 0 then                 //如果计数器值大于1,则表示还需要打印当前产品的记录
  begin
    if MasterData1.DataSet.Eof then   //如果主表已经到记录尾,则表示主表已打印完,报表引擎不会再打印内容,则需要手工设置显示
    begin
      Engine.NewPage();
      Engine.Showband(MasterData1);
    end
    else
    begin
      //DetailData1.DataSet.Prior();      //如果不是记录尾,则只需把从表记录指针前移一下即可实现重复打印
    end;              
  end;          
  // 填写的代码 结束
       
end;


三、在主数据栏(MasterData1)的“OnBeforePrint”事件函数中填写如下代码:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  // 填写的代码 开始
  if _count = -1 then _count := <物流单标签."quantity"> - 1;  //把打印份数字段中的值赋给计数器        
  // 填写的代码 结束                                         
end;


四,在代码区顶部填写如下代码:

// 填写的代码 开始
var
  _count : Integer = -1;     //用以记录剩余应打份数的计数器
// 填写的代码 结束


五、完整代码如下:

var
  _count : Integer = -1;     //用以记录剩余应打份数的计数器  
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  if _count = -1 then _count := <物流单标签."quantity"> - 1;  //把打印份数字段中的值赋给计数器                                               
end;
                     
procedure ColumnFooter1OnAfterPrint(Sender: TfrxComponent);
begin
  _count := _count - 1;               //每打印一页,计数器减一        
  if _count >= 0 then                 //如果计数器值大于1,则表示还需要打印当前产品的记录
  begin
    if MasterData1.DataSet.Eof then   //如果主表已经到记录尾,则表示主表已打印完,报表引擎不会再打印内容,则需要手工设置显示
    begin
      Engine.NewPage();
      Engine.Showband(MasterData1);
    end
    else
    begin
      //DetailData1.DataSet.Prior();      //如果不是记录尾,则只需把从表记录指针前移一下即可实现重复打印
    end;              
  end;               
end;

//以下两行代码一定要保留
begin
end.


这样,所有工作就完成了,预览效果如上面图示。


---------------------------------

示例模板和json见附件


上传的附件:
最新回复 (0)
返回