水晶報表自動補空行,補格線思路

對於自動補空行或格線的情況,一般出現在以下兩種情況:
1:清單類打印,最後一頁數據不滿時以空行或者格線填滿
UPDATE 2005年4月27日
感謝奚彧的提醒,發現這篇文章,剛好是這種情況的說明
http://blog.csdn.net/landlordh/archive/2005/02/05/281590.aspx

幸虧自己沒寫,呵呵,不然可真是浪費了~~
2:單據類,一般單據格式固定,如每張打印5行數據,不滿處則以格線補滿5行。
UPDATE 2005年8月1日
感謝bonheur的提醒,原文最後一組時公式錯誤


我們以第2種情況爲例進行說明,因爲第2種會了第1種也自然就明白了
在這裏我們使用模板公式來實現該功能,而不是用程序代碼實現。
該方法並不是很靈活,歡迎大家進行討論。

非常感謝CSDN的阿土及飛翔的心對本文的貢獻
我在這裏只擔當一個文章整理及講解的角色,現在開始

我們現在有張單據是這樣的,這是我用Word做出來的


對於這種單據,我們一般採用定製紙型的方式,將執行設置爲與單據規格一樣的紙型
這裏我這步就省略了。

構造如下數據

我們在做的時候,以"品牌"進行分組。
本模板中假定每組的數據不超過每張憑證的最大行數。

我們按正常步驟做一個按品牌進行分組的模板
並且設置每頁顯示一組
Groupnumber mod 1=0

進入節專家,在詳細資料節中插入4個空節,

勾上這四節的"抑制顯示" ,分別以Crystal語法寫入以下公式
詳細資料b
If onlastrecord  Then
    
If COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})<5 Then
       
False
    
Else
      
True
Else
    COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})
>=5  Or (Next({材料採購明細.品牌})={材料採購明細.品牌})

對該節公式做一下說明
如果當前記錄是最後一條記錄
   判斷該組的條數是否>=5 如果符合,則不一致顯示(也就是顯示);否則,一致顯示
如果不是最後一條記錄
  如果該組條數>=5 或者 下一條記錄與本條記錄是同一組的,則抑制顯示

通俗點說就是這樣的
一共有5個節,第一節有數據則填充,沒數據當然就不填充了
然後開始判斷第2個節
對於第2個節,如果該組的總記錄條數大於>=5條,則前面的第一個節就已經填充滿了,此處就不必要顯示了(True)
同樣的,如果下一個記錄與本條記錄的值一樣的話,那麼說明後面還有數據,也就不用顯示了(True)
但是對於最後一條數據,需要特別處理
最後一條數據的後面就沒有數據了
所以如果條數>=5的話,那麼前一個節肯定沒填充滿,所以就顯示該節(False)
否則,如果條數不足5條的話,則前面已經處理完了(在前一輪循環中),就不顯示該節了(True)

詳細資料c
If onlastrecord  Then
    
If COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})<4 Then
       
False
    
Else
      
True
Else
    COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})
>=4  Or (Next({材料採購明細.品牌})={材料採購明細.品牌})

詳細資料d
If onlastrecord  Then
    
If COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})<3 Then
       
False
    
Else
      
True
Else
    COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})
>=3  Or (Next({材料採購明細.品牌})={材料採購明細.品牌})

詳細資料e
If onlastrecord  Then
    
If COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})<2 Then
       
False
    
Else
      
True
Else
    COUNT({材料採購明細.材料名稱},{材料採購明細.品牌})
>=2  Or (Next({材料採購明細.品牌})={材料採購明細.品牌})


這個時候模板中就增加了4行
在每個新增節的最上面畫一條橫線來實現表格形式,不然就從上到下的一個大框了

好,看看效果

 
下載模板文件
http://www.cnblogs.com/Files/babyt/Crystal1.rar

本文寫得比較倉促,心裏感覺不塌實
可能有不少不足之處,歡迎大家進行討論
我有時間的話也會靜下心來好好再看一下

-------Over------------------
希望這篇文章對你有所幫助。
阿泰 20050414

特別申明:
文章出處:http://www.cnblogs.com/babyt/archive/2005/04/15/138214.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章