反饋已提交

網絡繁忙

解決動態欄的分組統計問題

一、概述

1
版本。
報表伺服器版本功能變更
11.0--

2
預期效果。
  1. 利用 資料集 或 函式 方式製作出來的動態欄預設是只能顯示固定的欄位的,沒有動態分組統計的功能,如果報表需要使用動態欄,同時某個欄位又需要彙總,那麼原來的方法就不太適用了,必須進行改進。最終效果如下圖。

3
實現思路。
  1. 由於 FineReport 為普通欄提供的彙總不再適用於動態欄,要想實現【銷量】按前面的欄自動彙總的話,必須透過 SQL 進行處理,首先判斷動態欄是否選擇了【銷量】,然後把銷量欄位處理成彙總。

二、範例

1
準備範本。
  1. 開啟範本【%FR_HOME%\webroot\WEB-INF\reportlets\doctw\Parameterr\DynamicCol\資料集參數實現動態欄.cpt】。詳情可參見:資料集參數實現動態欄.cpt

  2. 將 A2-F2 儲存格的資料設定改由【列表】改成【分組】,如圖1。

  3. 修改資料集 ds1 的 SQL 語句為:【SELECT ${if(len(col)=0,'*',replace(col,'銷量','sum(銷量)'))} FROM 銷量 ${if(len(col)<1,"","group by "+replace(col,',銷量',''))}】,可實現:

    參數為空時,查詢全部,按左父格分組顯示;

    勾選參數但未包含【銷量】欄時,僅按左父格分組顯示;

    勾選了參數且包含【銷量】欄時,【銷量】欄可按左父格分組彙總。

  4. 語句說明如下表所示。

  5. 刪掉參數 【col】 的變數預設值,如下圖2所示。

公式
公式說明
${} 括號內可支援 FineReport 的內建公式。
if(len(col)=0,'*',replace(col,'銷量','sum(銷量)')) 表示參數【col】為空時,查詢全部;不為空時,可使用 replace  函式將查詢結果中【銷量】欄的值用【sum(銷量)】更換。
if(len(col)<1,"","group by "+replace(col,',銷量',''))

表示參數col為空時,執行空,相當於【SELECT ${if(len(col)=0,'*',replace(col,'銷量','sum(銷量)'))} FROM 銷量】。

不為空時,執行 【"group by "+replace(col,',銷量','')】,根據一個或多個欄對查詢結果進行分組。

"group by "+replace(col,',銷量','') 【group by】中不能出現銷量欄,所以如果勾選了【銷量】欄,則【銷量】欄用空更換。

注:',銷量' 中的逗號不能省略,因為用空值更換時,會出現 SQL 語句報錯。

2
效果預覽。
  1. PC 端:儲存範本,點選【分頁預覽】,效果如下圖1所示。

  2. 行動端:App 端及 H5 端均支援。

三、範本下載

  1. 已完成範本,可參見:【%FR_HOME%\webroot\WEB-INF\reportlets\doctw\Parameter\DynamicCol\動態欄的分組統計.cpt】。

  2. 點選下載範本:動態欄的分組統計.cpt

附件列表


主題: 參數應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙