現在很多時候都會遇到 水晶報表A4紙打印兩張中一刀憑證單頭如下:
- numbervar firstRecordOfGroup;
- if({aglr903.aba01}<>previous({aglr903.aba01}))
- then firstRecordOfGroup:=(recordnumber-1);
- not(({aglr903.aba01}<>previous({aglr903.aba01}))
- or
- (count({aglr903.aba01},{aglr903.aba01})>4 and recordnumber>firstRecordOfGroup+1 and
- (recordnumber-firstRecordOfGroup)mod 4=1
- ))
然後再在第三個節裏控制顯示。- 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
後面的,準備打印多少行就增加多個節,公式和上面查不多,如:
- 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
當然,很容易就看出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上傳附件的辦法就是改擴展名