問題的提出:
乙個帶格線的清單類報表,假設有6行,我們設定的頁面紙型能容納5行,那麼資料會分成兩頁。
第1頁顯示5行,佔滿1頁,而第2頁則只顯示1行,後面是一片空白區域。
怎麼能根據資料的多少,自動填滿後面的空白區域呢?
如下圖(第2頁):
解決方法:
清單類的報表,要填充的是最後一頁的剩餘區域。我們以每頁顯示5行資料為例。
那麼對於最後一頁只有五種情況。
1:最後一頁剛好有5條資料,不需要填充。
2:最後一頁有4條,需要填充1個空行;有3條,需要填充2個空行;有2條,需要填充3個空行;有1條,需要填充4個空行。
以有1條資料為例子,最大加4個空行。於是,加上原來的資料行,那麼詳細資料節上應該有5個小節。
設計出來的模板如下:
將詳細資料節拆分成5個節,最上面的乙個放資料,設定為顯示,其餘的4個節全部抑制顯示,我們用公式來控制它的顯示與否
畫線方法:在頁首和頁尾畫個框,框的下邊沿緊貼在頁首的上邊沿。
然後在每個詳細資料節的上邊沿下面都畫一條橫線。
欄位間畫豎線,注意豎線的下邊的這個頂點要頂在頁尾這個節的線上。
下面我們來控制顯示,
以下公式使用crystal語法
1:編輯「詳細資料節b」 (也就是第乙個空白節,我在上面放了乙個欄位做標記,實際使用時不需要)抑制顯示後面的公式
count() mod 5 表示最後一頁上剩餘的數目。這個值是0、1、2、3、4
0表示已經塞滿,大於0表示需要填充
//注意這2個and條件
//1:count() mod 5>0 說明記錄數不是5的倍數,也就是說需要補空行
//對於這個節來說,只要需要補,就顯示
//2:onlastrecord 這個條件是「是否是最後一條記錄」,說明這個節只出現在最後一條記錄之後
//也就是會出現在最後一頁上
ifcount() mod
5>
0and onlastrecord then
false
//外面勾選了抑制顯示,那麼false的意思就是不抑制顯示。也就是這個節在這個條件下會顯示
else
true
2:現在來設定「詳細資料節c」,第2個空白節。因為第乙個詳細資料節b之前已經顯示了。
ifcount() mod
5>
0and count() mod
5<=
3and onlastrecord then
false
else
true
於是,公式為
count() mod
5>
0and count() mod
5<=
and onlastrecord then
false
else
true
於是,公式為
count() mod
5=1
and onlastrecord then
false
else
true
好設定完畢。
如果是5以外但是數字,假設為n。
那麼詳細資料節就拆成n個,第乙個放資料 ,後面的公式依次類推。
第1個空行條件為 :
if count() mod n >0 and onlastrecord then
第2個到倒數第2個空白節的公式為:
if count() mod n >0 and count() mod n <=(n-2) onlastrecord then
count() mod
5=1
and onlastrecord then
...
其他:如何保證每行的行高是一樣的?
水晶報表自動補空行
之前我在原來的基礎上構造了資料,現在a組資料有8條資料,b是10條,c,d均少於5條,e剛好5條 1 首先我們畫出模板,假設你也是顯示5行,那麼,就用乙個詳細資料節,然後,將組頁尾拆分成4個 本例中,因為使用了乙個固定的頁尾顯示合計,所以是拆分成5個的,最後乙個節固定顯示 這裡使用了乙個執行時總計字...
水晶報表自動換頁
在報表上右鍵 報表 節專家 詳細資料 在以下內容前新建頁 右邊的小方塊中新建basic公式 水晶報表常規頁碼是以下 的 3 滿3行記錄的自動換行,碰到tbuserinfo.serialno與上一行記錄不同也換行。shared serialnogg as number shared recordtem...
水晶報表自動換行
body body,p,font,div,li body,td,th i pre a 在要換行的字段點右鍵,在彈出視窗選擇formar field 設定物件格式 在彈出視窗的common 公用 選項框裡把can grow 可以擴大 勾上,或著用快捷鍵alt c 當此框選中後,maxmum numbe...