報表說明 根據訂單表和指定年份(參數)按月統計訂單金額,以及與上一訂單月金額比,與去年同月金額比。報表樣式如下: 這里需要注意的是比去年同期是指與去年同月份的比值,無對應月份則為空;要求 只顯示本年數據 。 這個報表的麻煩之處在于需要較復雜的數
根據訂單表和指定年份(參數)按月統計訂單金額,以及與上一訂單月金額比,與去年同月金額比。報表樣式如下:
這里需要注意的是比去年同期是指與去年同月份的比值,無對應月份則為空;要求只顯示本年數據。
這個報表的麻煩之處在于需要較復雜的數據計算工作,但一般報表工具的計算能力較弱,如果采用報表工具本身來完成這個計算工作則會相當復雜,比如采用用潤乾報表來實現將會是這樣的:
首先通過兩個數據集分別讀取今年和去年的數據,在報表模板中進行關聯后分別顯示兩年同月的數據,從而完成比較。
數據集設置
通過ds1和ds2分別取今年和去年數據,數據集設置如下:
報表模板及表達式設置
其中,需要設置D列隱藏,以便報表展現時不顯示去年數據。
這種實現方式相對簡單,無需復雜的表達式即可實現,但缺點是由于要使用多數據源,從同樣數據表中過濾兩次分別輸出兩個數據集,取數效率較低。此外,隱藏列D也會影響報表性能。
通過按訂購年月分組,使用潤乾報表提供的位移坐標,輔助以隱藏行列的方式實現。
數據集設置
數據集參數如下:
報表模板及表達式設置
通過這種方式,通過潤乾報表中層次坐標的高級寫法避免了多源,體現了潤乾報表的強大之處,但是仍然要依靠隱藏行列實現,而且E3中計算同期比的計算表達式過于難書寫和理解(要理解主格附屬格的概念、位移坐標的使用以及如何在格集表達式中引用當前格的主格),這也給報表開發和維護帶來了困難。
無論是多數據源,還是層次坐標,依賴隱藏行列,都是因為需要在報表中完成同環比計算導致,而往往這樣的計算還比較復雜。這是因為傳統報表工具將數據計算(數據源準備)和報表呈現混在一起導致(即使功能強大的潤乾報表也不例外),如果將這兩部分分開,則會使報表開發更加清晰。
另一種辦法是事先把數據計算準備好,報表工具只需要負責呈現和簡單計算。但無論是使用復雜SQL、存儲過程和自定義JAVA數據集編程,對于這樣的復雜運算(實際情況往往比這個例子更麻煩得多)都是一件工作量很大的事情,而且難以維護。
集算報表本身內置了適合結構化計算的腳本,可以方便地寫出數據準備的計算(相當于一種更使用更簡單的自定義數據集)。上述報表需求使用集算報表可以這樣完成。
使用集算腳本編輯器編寫集算腳本,使用系統默認數據源demo。
編寫腳本完成同比環比計算(右側為單元格運行格值):
A1:連接數據源demo;
A2:根據年份參數取出今年和去年兩年的訂單數據;
A3:關閉數據連接;
A4:按訂購日期排序;
A5:按年 月分組,并匯總訂單金額;
A6:計算比上期,這里注意到使用[-1]來引用上一條記錄;
A7:按月份排序;
A8:計算相同月份和上一年的比值,即同期比;
A9:只選出本年數據,通過A10為報表返回結果集。
使用集算報表編輯器,設置數據源,用于報表預覽。
新建報表模板設置報表參數:
設置集算器數據集,調用上述編輯好的腳本文件:
其中,dfx文件路徑既可以是絕對路徑,也可以是相對路徑,相對路徑是相對選項中配置的dfx主目錄的;參數arg1為腳本參數,year為報表模板參數,這里將報表輸入參數傳遞給腳本用于數據計算,事實上兩個參數可以同名。
報表模板及表達式如下:
可以看到,使用集算器腳本可以快速完成跨行組運算的報表。而且外置的集算腳本具有可視化的編輯調試環境,編輯好的腳本還可以復用(被其他報表或程序調用)。不過,如果腳本已經調試好,而且不需要復用的時候,要維護兩個文件(集算腳本和報表模板)的一致性會比較麻煩,這時候直接使用集算報表的腳本數據集就比較簡單了。
在腳本數據集中可以分步編寫腳本完成計算任務,語法與集算器一致,還可以直接使用報表定義好的數據源和參數。以上述第二個報表需求為例,使用腳本數據集可以這樣完成:
1. 在數據集設置窗口中點擊“增加”按鈕,彈出數據集類型對話框,選擇“腳本數據集”;
2.在彈出的腳本數據集編輯窗口中編寫腳本;
這里可以看到,在腳本數據集中直接使用了報表中定義好的數據源demo和參數year,比起單獨的集算腳本更加簡單、直接。
3.報表模板和表達式與使用集算器數據集方式一致,不再贅述。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com