日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

润乾报表实现可反复分组报表及改进

發(fā)布時間:2023/12/15 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 润乾报表实现可反复分组报表及改进 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

可反復(fù)分組報表是報表開發(fā)中比較常見和麻煩的任務(wù)。可反復(fù)分組報表是指同一記錄出如今不同的分組中被反復(fù)統(tǒng)計,常見的可反復(fù)分組報表有兩類:一類是分組區(qū)間有交集。如:統(tǒng)計年齡段在20-30歲、25-35歲、30-40歲之間的用戶數(shù)量;另外一類是分組區(qū)間有包括關(guān)系,如:統(tǒng)計各地區(qū)以及該地區(qū)主要城市的匯總數(shù)據(jù),“華北,當中北京;華東。當中上海……”。

以下通過兩個實例來看一下潤乾報表的實現(xiàn)過程。

實例一

依據(jù)員工基本信息表按年齡統(tǒng)計各年齡段區(qū)間的人數(shù)、獎金等匯總情況。

報表樣式例如以下:

<img src="http://img.blog.csdn.net/20140818110439887?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM4ODQ5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

這里“30-40歲”和“35-45”歲兩個區(qū)間是有反復(fù)的。

實現(xiàn)

在潤乾報表中,該類報表主要通過ds.enumGroup()函數(shù)完畢,報表模板及表達式例如以下:

當中A2單元格表達式為:

=ds1.enumGroup(true,age(BIRTHDAY)>20&&age(BIRTHDAY)<=30,"20歲到30歲",age(BIRTHDAY)>30&&age(BIRTHDAY)<=40,"30歲到40歲",age(BIRTHDAY)>=35&&age(BIRTHDAY)<45,"35歲到45歲",age(BIRTHDAY)>=45,"45歲以上")

通過ds.enumGroup()能夠比較easy完畢上述報表,分組較少的情況尤其適用。當分組較多的時候,該表達式會由于過于復(fù)雜導(dǎo)致報表難于維護。

實例二

依據(jù)訂單表統(tǒng)計各省份訂單情況,要求列出某些主要城市(如青島、深圳、石家莊)的訂單情況。報表樣式例如以下:

實現(xiàn)

潤乾報表實現(xiàn)該類報表主要使用ds.overlap()函數(shù),報表模板及表達式例如以下:

當中。A2單元格表達式為:

=ds1.overlap(true,省份=="上海","上海",省份=="北京","北京",省份=="四川","四川",省份=="天津","天津",省份=="山東","山東",城市=="青島","
當中:青島",省份=="廣東","廣東",城市=="深圳","
當中:深圳",省份=="江蘇","江蘇",省份=="江西","江西",省份=="河北","河北",城市=="石家莊","
當中:石家莊",省份=="海南","海南",省份=="福建","福建",省份=="遼寧","遼寧",省份=="重慶","重慶",省份=="陜西","陜西")

與實例一中一樣,ds.overlap()對分組較少的情況尤其適用。當分組較多的時候,表達式過于復(fù)雜將導(dǎo)致報表難于維護。

潤乾報表能夠?qū)崿F(xiàn)上述兩類可反復(fù)分組報表,在分組較少的時候做起來尤其簡單。這也是其它報表工具無法比擬潤乾報表的方面。但當分組較多,計算比較復(fù)雜的情況下。潤乾報表實現(xiàn)起來就比較困難了。原因在于報表的數(shù)據(jù)源準備和呈現(xiàn)混在一起導(dǎo)致的。往往須要在報表模板中實現(xiàn)大量的計算任務(wù),假設(shè)將這兩部分分開,即:獨立的計算層負責數(shù)據(jù)源準備(完畢復(fù)雜計算)和獨立的展現(xiàn)層負責報表呈現(xiàn),則會使報表開發(fā)變得更加清晰。

潤乾公司基于潤乾報表內(nèi)核推出的改進產(chǎn)品集算報表5.0版,當中內(nèi)置了獨立的計算引擎:集算器,用于解決數(shù)據(jù)源準備問題。

在集算報表中能夠?qū)?fù)雜的數(shù)據(jù)計算(數(shù)據(jù)源準備)工作交由集算器完畢。可將其視為報表的計算層;而報表本身僅僅負責接收計算后結(jié)果進行報表展現(xiàn)(有時包含一些簡單計算)。從而將數(shù)據(jù)源準備和報表呈現(xiàn)分開。使得報表制作更為清晰。

對于上述報表,通過集算報表能夠這樣實現(xiàn)并解決當中的難點:

實例一

編寫集算腳本

首先使用集算器編寫集算器腳本,完畢分組匯總,為報表準備數(shù)據(jù)源:

<img src="http://img.blog.csdn.net/20140818110459325?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM4ODQ5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

A1查詢員工表數(shù)據(jù),因為該表僅僅有出生日期,故在A2中添加并計算年齡字段;A3、A4指定年齡段區(qū)間及其區(qū)間名稱,在A5中進行可反復(fù)枚舉分組。并在A6中計算分組匯總值,最后A7將結(jié)果集返回給報表。

報表調(diào)用

使用集算報表設(shè)計器,新建報表。使用“集算器”數(shù)據(jù)集類型,選擇上面編輯好的集算腳本(age.dfx):

設(shè)置報表模板及表達式

<img src="http://img.blog.csdn.net/20140818110505281?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM4ODQ5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

報表中僅僅簡單的列表取值就可以,無需再完畢復(fù)雜計算。

這里能夠看到,在集算報表中將數(shù)據(jù)準備(集算腳本)和報表呈現(xiàn)(報表模板)分開帶來的優(yōu)點。在計算層通過集算器完備的計算體系完畢數(shù)據(jù)源準備的工作。

實例二

A1從訂單表讀取數(shù)據(jù);

A2-B4列出主要城市與省份的相應(yīng)列表。

A6依照省份分組匯總;

A7、A8按指定城市對位分組后匯總。

最后通過A9將城市數(shù)據(jù)插入A6按省匯總的結(jié)果中。

報表調(diào)用

使用集算報表設(shè)計器,新建報表,使用“集算器”數(shù)據(jù)集類型,選擇上面編輯好的集算腳本(age.dfx)

設(shè)置報表模板及表達式

通過上述兩個實例。就潤乾報表和集算報表實現(xiàn)方式的差別。能夠看到:

1、集算報表因為將計算層和展現(xiàn)層分離,報表開發(fā)更為清晰,復(fù)雜計算任務(wù)均在集算器中完畢。報表本身僅僅負責數(shù)據(jù)展現(xiàn)(報表模板中僅僅編寫簡單的表達式就可以);

2、集算器具備完備的計算體系,擁有豐富的函數(shù)庫,如實例中用到的P.enum()進行枚舉分組和P.align()完畢對齊分組。而前者又有3種函數(shù)選項,后者則有6種函數(shù)選項。如此豐富的函數(shù)庫,使得差點兒全部的復(fù)雜運算(數(shù)據(jù)源準備工作)都能夠在集算器中完畢;

3、除了豐富的函數(shù),集算器採用分步的編碼方式。不管多么復(fù)雜的計算邏輯都能夠在集算器中逐步實現(xiàn),從而攻克了在潤乾報表中僅僅能寫在一個表達式中帶來的編寫和維護難題。

總結(jié)

以上是生活随笔為你收集整理的润乾报表实现可反复分组报表及改进的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。