《水晶报表自动补空行,补格线思路》 【转】
寫在文章之前
在2005年4月的 《水晶報表自動補空行,補格線思路》一文中的最后,我有這么一句話
本文寫得比較倉促,心里感覺不塌實
可能有不少不足之處,歡迎大家進行討論
時隔近3年后,這個不踏實終于體現出來(其實之前可能已經有人提出來了,只是有相當長的時間我沒有去關注。。。)
在Richard lee的留言中
http://www.cnblogs.com/babyt/archive/2008/01/27/138214.html#1054868
提到
我最近碰到財務的憑證報表問題
你的那個模板好用,可是每組的條數小于每張憑證的最大行數
假如一組的記錄數大于每張憑證的最大行數,該如何處理?
我實際做了一下,我之前提供的方法對確實無法解決這種情況
而造成這種情況的原因,是我之前的文章中構造的數據不完備造成的
因為數據沒有涵蓋所有的情況
我是以5為分隔單位,但是我實質上全部構造了每組數據都小于5,但是對大于5,等于5的數據卻沒有構造
這也再次驗證了測試不充分的害處
在本文中,我使用了與之前的方法不同的另外一種方法,相比之前的方式來說,更容易理解些
原來是靠多個詳細資料節來實現的補充空格,現在,我們用組頁腳的方式來補充,相比來說,這樣是更合理的
本文,務必配合《水晶報表自動補空行,補格線思路》一文使用,雖然那個方案可以說是不對的
之前我在原來的基礎上構造了數據,現在A組數據有8條數據,B是10條,C,D均少于5條,E剛好5條
1、首先我們畫出模板,假設你也是顯示5行,那么,就用一個詳細資料節,然后,將組頁腳拆分成4個
本例中,因為使用了一個固定的頁腳顯示合計,所以是拆分成5個的,最后一個節固定顯示
這里使用了一個運行時總計字段 ,用以跟蹤每條記錄在組中的序號,組變更時,記錄重新編號,用途在后面的說明。
為了直觀些,我把這個字段拖到了界面上,實際操作時,你可以將這個字段抑制顯示掉
模板中的紅字是為了顯示得更直觀加上去的,實際使用時刪除掉即可。
思路是這樣的,如果一組數據,除以5剩余的部分,肯定是1、2、3、4,分別處理這幾種情況
當剩余4條的時候,顯示組頁腳a,3的時候顯示b,2的時候顯示c,1的時候顯示d,補滿。
對于剛好5條的情況,在后面說明
特別注意:畫線的問題。如果你不注意此接,你會注意到,你的線可能會亂七八糟
請注意!在出現分組的情況,或者需要根據需要進行運行時抑制顯示控制時,務必將豎線,控制在一個節內,不可跨接。
注意豎線的節點只能出現在自己所在節的兩個邊界內,不可出現在邊界外!
本文中的例子我偷了點懶,因為我知道什么時候會出問題什么時候不會,如果你不確定,請依照以上規則
2、分頁控制
本例子有兩種分頁控制,一種是組分頁,一種是一組數據大于5條時,每5條的分頁
組分頁可以在組頁眉和組頁腳上設置,本文中組頁腳承擔了另外的補空格任務,所以分頁在組頁眉上
增加一個公式
即每一個分組都換頁
然后在詳細資料節上設置公式,使每5條分一頁
//此處需要注意
//因為我們在分組上已經加了一個分頁了,這里是組內的輔助分頁
//
//如果記錄是5的倍數,則是分頁時機,但是要另外注意
if {#RTotal0} mod 5 =0 then
??? //如果此時是組內的最后一條記錄,則此處不進行分頁,因為會有一個組分頁替換該
?if? Count ({材料采購明細.材料名稱}, {材料采購明細.品牌}) ={#RTotal0} then
??? false
?else
??? true
else
??? false
Count ({材料采購明細.材料名稱}, {材料采購明細.品牌})? 表示按組品牌分組后每組的記錄個數
{#RTotal0}?? 表示當前的記錄需要
用以跟蹤每組的最后一條記錄,用以處理如果剛好是5的倍數的時候,出現詳細資料節與組出現重復分頁的情況
3、設置補充行顯示,以組頁腳a為例子,當之前顯示4條,需要補充1個空行時,此節顯示
//組的最后一條記錄
if Count ({材料采購明細.材料名稱}, {材料采購明細.品牌}) mod 5>0 and Count ({材料采購明細.材料名稱}, {材料采購明細.品牌}) mod 5<=4 then
??? false
else
??? true
其余各節依此類推
請在此處下載示例模板及數據庫文件,將目錄解壓到E盤即可完整使用,CR9
http://files.cnblogs.com/babyt/20080128Crystal1.rar
本文從試驗到最后成文花了我近兩個小時的時間,不過對我來說也是個教訓了,
另外,幾年前的不踏實,也希望就此解決之
-EOF-
20070127
轉載于:https://www.cnblogs.com/kingjiong/archive/2009/01/15/1376216.html
總結
以上是生活随笔為你收集整理的《水晶报表自动补空行,补格线思路》 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏玩家行为基本模式的初探小汇
- 下一篇: ADO.NET事物