现在很多时候都会遇到 水晶报表A4纸打印两张中一刀凭证
单头如下:
然后再在第三个节里控制显示。
后面的,准备打印多少行就增加多个节,公式和上面查不多,如:
当然,很容易就看出mod 4=0…… 就是为了控制显示
- numbervar firstRecordOfGroup;
- //numbervar lastRecordOfGroup;
- //将每组的第一个recordnumber赋值给变量a
- if({aglr903.aba01}<>previous({aglr903.aba01}))
- then firstRecordOfGroup:=(recordnumber-1);
- //滿足此條件時抑制顯示該Section-Detail A
- not(({aglr903.aba01}<>previous({aglr903.aba01}))
- or
- (count({aglr903.aba01},{aglr903.aba01})>4 and recordnumber>firstRecordOfGroup+1 and
- (recordnumber-firstRecordOfGroup)mod 4=1 //recordnumber-firstRecordOfGroup代表每組的第幾條記錄
- ))
- if (OnLastRecord AND count({aglr903.aba01},{aglr903.aba01})mod 4=0)OR
- (NOT OnLastRecord AND
- (
- {aglr903.aba01}=next({aglr903.aba01}) or
- ({aglr903.aba01}<>next({aglr903.aba01}) and count({aglr903.aba01},{aglr903.aba01})mod 4=0)
- )
- )
- then true //不顯示此Section
- if (OnLastRecord AND count({aglr903.aba01},{aglr903.aba01})mod 4=0 or count({aglr903.aba01},{aglr903.aba01})mod 4=3)OR
- (NOT OnLastRecord AND
- (
- {aglr903.aba01}=next({aglr903.aba01}) or
- ({aglr903.aba01}<>next({aglr903.aba01}) and count({aglr903.aba01},{aglr903.aba01})mod 4=0 or count({aglr903.aba01},{aglr903.aba01})mod 4=3)
- )
- )
- then true //不顯示此Section
头疼的是每张报表都要有汇总,如果一张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上传附件的办法就是改扩展名