水晶報表分組分頁且每頁最多顯示N條記錄

2021-06-02 04:53:47 字數 1628 閱讀 5648

本文為解所作

先確認下原帖需求:

1、詳細節最多5條記錄(不能超過5條);

2、無論前一組是否滿5條記錄,每個新組都要另起一頁

主要就這兩點。

報表按id分組就不用再提及了吧?(右擊報表空白處->插入->組)

首先新建一執行總計字段,如圖示

該執行總計字段就是為了重置recordnumber,模板設計好後應該是這樣的,如圖示

就這樣是達不到我們需求的,我們還要為它處理下:)

針對需求1,我們的處理方案是

onlastrecord意指最後一條記錄,not onlastrecord自然是非最後一條記錄,在這裡就是指非最後一條記錄時就在後面頁新建頁,最後一條記錄時就不用再新建頁了。若不用該公式控制的話,報表的最後一頁總是空白頁(沒有詳細節資料)

原帖還有乙個小需求:在第一頁的id後自動加-(1),第二頁id後自動加-(2)

其實應該是在每個#組頭(組頁首)處顯示 "id:" + id值   而已:)

這樣我們只需把分組後的組名自定義一下即可,如圖示:

由於這邊的id是數字型,所以用totext函式把它轉成字元型,後面的引數0表示保留0位小數(即不保留小數)

本文的重點是在模板的設計,**就不晾出來了

modified @2011-11-29 21:45

前文提及的小需求:在第一頁的id後自動加-(1),第二頁id後自動加-(2)

本人理解錯了,應該是組內頁碼重置,抱歉~  

其實泰哥這篇【分享】水晶報表組內分頁已經做到這個效果了,但不知道為什麼我這竟然沒有找到roundup函式,所以修改下泰哥原文公式x1的內容如下:

//每個組的總記錄數

numbervar grouprecordcount := count (, );

//每個組的總頁數

numbervar grouppagecount := grouprecordcount / 5;

if int(grouppagecount) <> grouppagecount then

( grouppagecount := int(grouppagecount) + 1

);//重置後的recordnumber

numbervar grouprecordnumber := ;

//組內當前頁

numbervar grouppagenumber := grouprecordnumber / 5;

if int(grouppagenumber) <> grouppagenumber then

( grouppagenumber := int(grouppagenumber) + 1

);//最終報表介面顯示

'第' + totext(grouppagenumber, 0) + '頁 / 共' + totext(grouppagecount, 0) + '頁'

//說明:int函式是取整函式,如int(1.2)=1; int(1.9)=1
//寫好後將該公式欄位拖放到#組頭(組頁首)節即可

水晶報表進行每頁統計(在水晶報表中實現每頁統計)

思路如下 crystal語法 1 用乙個變數mysum來累計頁面資料 訂單.訂單金額 公式 currentsum,放在詳細資料節需要進行彙總的字段的位置 mysum 如果不需要顯示,抑制顯示即可 2 在每頁的頁尾獲取到這個變數的值 也就是該頁最後乙個sum值 當然這個時候後乙個mysum是前面所有資...

水晶報表分頁彙總

水晶報表分頁彙總 建三個公式字段,第乙個 公式1 輸入下面的公式 whileprintingrecords global numbervar ptotal ptotal 0 第二個 公式2 輸入下面的公式 whileprintingrecords global numbervar ptotal pt...

水晶報表基礎入門 4 水晶報表排序 分組技術

6.1.3水晶報表排序 分組技術 報表資料的預設排列順序會與資料庫中的資料記錄的存放順序相同,因此會毫無規則且不會依照任何順序來排列。crystal reports提供 記錄排序專家 對話方塊來完成對報表資料的排序,如圖 6.7所示。圖6.7 記錄排序專家 在 記錄排序專家 對話方塊開啟後,從 可用...