1. 程式人生 > >2019-1-16水晶報表技巧總結

2019-1-16水晶報表技巧總結

isp 出現 tab 選擇 分組 ota span 在那 頁眉

第一條:合計問題,包括匯總或者是簡單數量合計或者是頁面行數的統計或者是頁面數的統計等...

說簡單點,就是3個公式
AmountReset 用於清空頁合計
RunningTotal 用於累加頁合計
AmountDisplay 用於顯示頁合計.

在“字段資源管理器”對話框中選擇“公式字段”,然後單擊“新建”。
將公式命名為“RunningTotal”,然後單擊“使用編輯器”。
出現公式工作室,公式編輯器處於活動狀態。
將以下內容輸入“公式”框:
WhilePrintingRecords;
CurrencyVar Amount;
Amount := Amount + {訂單.訂單金額};

在公式工作室中創建“AmountReset”:
WhilePrintingRecords;
CurrencyVar Amount := 0;

在公式工作室中創建“AmountDisplay”:
WhilePrintingRecords;
CurrencyVar Amount;
該公式可用於隨時顯示 Amount 變量的當前值。

第二條:關於抑制顯示,在【詳細資料】中,有些字段不想在一些頁面顯示出來,可抑制顯示這些字段,在後面的公式中添加:

pagenumber=1

後面的數字,可以是一個範圍,填寫什麽數據,就抑制在那頁的顯示或者是那些頁的顯示。

第三條:分頁問題,有按組分頁或者按行分頁或者分組後按行分頁

按組分頁:
直接在【節專家】中選擇,組尾,在選擇【在後面頁新建頁】即可。

按行分頁:

在以下內容之前新建頁:

IF Remainder (RecordNumber, PageNumber*5+1 )=0 then
True
Else
False
這是5行一頁
在後面頁新建頁:
if onlastrecord then
false
else
if RecordNumber mod 10 =0 then
true
else
false
這是10行一頁
後面一種方法好一點,前面可以因為總行數不同分的不整齊。

按組按行分:
【在後面頁新建頁】【在以下內容之前新建頁】這兩個地方填寫公式是不一樣的
報表使用了分組,一個組的數據會跨好幾頁,要單獨顯示某組顯示到【第幾頁/共幾頁】
效果類似於:


這是一個綜合工程,我們要逐步來拆解一下。

本文使用水晶報表2008操作,其余版本類似。

1:首先,是按照某個字段來分組
這個就不多說了,我用的是水晶報表自帶示例庫的產品表,用顏色字段進行分組。

2:每頁顯示5行數據,且每頁的上都要顯示組頁眉,不同的組不能顯示在同一頁上。也就是組和組之間是的分離

(1)每頁顯示5行設置

如果是CR2008之前的版本,使用公式 RecordNumber Mod 5=0  
(2)每組上都要顯示組頁眉

(3)每個組單獨占一頁,不混合顯示。
也就是1頁顯示5行,如果組a有1行,組b有2行,他們要分別占據1頁,而不是合在1頁上顯示。

如果是CR2008之前的版本,使用公式 GroupNumber Mod 1=0  

3:使用運行時總和為每組數據單獨編號


把這個運行總和字段做到模板上看看效果。分別拖到詳細資料節和組頁眉


可以看到,放在組頁眉上的序號,其實就是在該頁上第一條記錄在組內的序號。

4:組內分頁基本原理

現在我們能拿到單獨的組內序號了,那麽,怎麽去用來分頁呢。
想一下,假設我們每組記錄數目為N(當然,N是變化的),如果存在多頁的話,因為是5行一分頁
那麽對一個組來說,每頁第一條的序號分別為1、6、11.。
也就是【5的倍數+1】。

那麽我們的公式其實就出來了,
我們以每頁組頁眉上的那條為基準,也就是每頁的第一條為基準,序號 除以 5,取整再 +1 即可。

公式如下


針對以的代碼,找不到Roundup,重寫:
numbervar x1;
numbervar x2;
numbervar p1;
numbervar p2;
//x1是每個組的數據條數 
x1:=  Count ({ DataTable3 .Job_No},{ DataTable3 .Job_No});
//得到總頁碼
p1:=round(x1/16+0.4);
//得到當前行組內序號,其實就是換後第一條的序號
x2:={#RTotal0};
//用序號外以每頁的條數16,得到當前頁碼
p2:=round(x2/16+0.4);

if p2=0 then p2:=1;


totext(p2,0) +‘ / ‘ +totext(p1,0) 

效果如下


公式中的幾個點特別說明一下
Count(字段,分組字段) 表示組小計計數
RoundUp(x)是向上取整,比如x=5則為5,5.1則為6.

第四條:公式顯示頁碼

‘第‘+ToText(PageNumber,0)+‘頁,共‘+ToText(TotalPageCount,0)+‘頁‘

這是可以顯示總有幾頁,現在是第幾頁

  

  

2019-1-16水晶報表技巧總結