水晶报表A4纸打印两张中一刀凭证

现在很多时候都会遇到 水晶报表A4纸打印两张中一刀凭证
单头如下:
  1. numbervar firstRecordOfGroup;
  2. //numbervar lastRecordOfGroup;
  3. //将每组的第一个recordnumber赋值给变量a
  4. if({aglr903.aba01}<>previous({aglr903.aba01}))
  5. then firstRecordOfGroup:=(recordnumber-1);
  6. //滿足此條件時抑制顯示該Section-Detail A
  7. not(({aglr903.aba01}<>previous({aglr903.aba01}))
  8. or
  9.  (count({aglr903.aba01},{aglr903.aba01})>4 and recordnumber>firstRecordOfGroup+1 and
  10.  (recordnumber-firstRecordOfGroup)mod 4=1     //recordnumber-firstRecordOfGroup代表每組的第幾條記錄
  11. ))
然后再在第三个节里控制显示。
  1. if (OnLastRecord AND count({aglr903.aba01},{aglr903.aba01})mod 4=0)OR
  2.    (NOT OnLastRecord AND
  3.     (
  4.      {aglr903.aba01}=next({aglr903.aba01}) or    
  5.      ({aglr903.aba01}<>next({aglr903.aba01}) and count({aglr903.aba01},{aglr903.aba01})mod 4=0)
  6.     )
  7.    )
  8. then true  //不顯示此Section
后面的,准备打印多少行就增加多个节,公式和上面查不多,如:

  1. if (OnLastRecord AND count({aglr903.aba01},{aglr903.aba01})mod 4=0 or count({aglr903.aba01},{aglr903.aba01})mod 4=3)OR
  2.    (NOT OnLastRecord AND
  3.     (
  4.      {aglr903.aba01}=next({aglr903.aba01}) or    
  5.      ({aglr903.aba01}<>next({aglr903.aba01}) and count({aglr903.aba01},{aglr903.aba01})mod 4=0 or count({aglr903.aba01},{aglr903.aba01})mod 4=3)
  6.     )
  7.    )
  8. then true  //不顯示此Section
当然,很容易就看出mod 4=0…… 就是为了控制显示
头疼的是每张报表都要有汇总,如果一张A4上的两张中一刀都是打印同一单的话没有问题,可要是不一样就有问题了,在水晶报表模板我没有
只有在数据集上想办法。我在生成临时表时就按照我的要求出一个自动增长列。如下
IF sr.aba.aba01 == l_aba01 THEN
LET l_seriesNo = l_seriesNo + 1
 ELSE
LET l_aba01 = sr.aba.aba01
LET l_seriesNo = 1
 END IF

sr.aba.aba01是数据库里的单号, l_aba01是临时表的单号,也就是如果有相同的单号,就把序号l_seriesNo加1,否则就表示又是一个单。
在水晶报表汇总字段,重置里写公式
if (PreviousValue({aglr903.seriesNo})>={aglr903.seriesNo} OR {aglr903.seriesNo} MOD 4 = 1) then
    formula = true
else
    formula = false
end if

seriesNo就是我在临时表里的自动列和报表数据没关系。
OK了,

附件我上传。大家可以下载下去把扩展名改下。
PS,发现csdn上传附件的办法就是改扩展名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值