水晶報表自動補空行及格線(無分組版)

2021-09-05 20:27:03 字數 2182 閱讀 9796

問題的提出:

乙個帶格線的清單類報表,假設有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...