批量列印傳遞多個參數

1. 概述

1.1 版本

報表伺服器版本
11.0
1.2 應用場景

對於一張資料量較大的範本,使用者希望可以根據具體需求篩選出需要列印的資料,再進行列印。

或對於多張範本,使用者可根據一張查詢範本篩選出需要列印的資料,並將這些資料作為參數,動態傳遞給其他範本,實現一鍵列印所有相關報表內容。

1.3 實現思路

本文範例:

例如有一張全國銷售人員的業績報表,使用者可以選擇列印某個地區下的某個銷售員的業績報表,或者同時選擇多個銷售員的業績報表進行列印。

實現思路如下:

範例實現思路

範例一:列印某個銷售員的業績報表(參數只傳遞一個值)

1)建立一張查詢範本,查詢需要列印的資料至當前頁面上

2)建立一張列印範本,用於列印過濾出的資料

3)設定點選事件:

  • 獲取查詢頁面上的資料

  • 並將資料作為參數傳入至列印範本,過濾出相關資料

  • 呼叫列印API FR.doURLPrint(config)  進行列印

範例二:列印多個銷售員的業績報表(參數可傳遞多個值)

1)建立一張查詢範本,選擇需要列印的資料

2)建立一張列印範本,用於列印過濾出的資料

3)設定點選事件

  • 獲取、分割查詢頁面上的銷售員陣列

  • 每個銷售員和地區組合成多組列印參數

  • 將列印參數傳入至列印範本,過濾出相關資料

  • 呼叫列印API FR.doURLPrint(config)  進行列印

2. 範例一:列印某個銷售員的業績報表

2.1 準備查詢範本

需要準備一張查詢範本,用於查詢需要列印的資料,並在列印時將查詢出的資料作為參數,傳遞給列印報表。

2.1.1 建立資料集

1)建立資料集 ds1 ,SQL 查詢語句如下:

其中,定義了兩個資料集參數 地區 和銷售員,可以讓使用者在列印時根據具體需求篩選出需要列印的資料。

select * from 銷量 where 地區='${地區}' and 銷售員='${銷售員}'}'

2)建立資料集 ds2,用於查詢所選地區下的銷售員名稱,SQL 語句如下:

select 銷售員 from 銷量 where 地區= '${地區}'

2.1.2 設計報表

範本樣式如下圖所示,其中,C2 儲存格為按鈕元件,如下圖所示:

2.1.3 參數新增元件

1)點選參數面板的「編輯」按鈕,進入參數面板編輯介面。

點選「全部新增」,將參數的預設元件新增到參數面板,並設定「地區」和「銷售員」參數元件類型為「下拉框元件」。如下圖所示:

3)設定「地區」元件的「資料字典」為資料庫表 FRDemoTW 中的「銷量」表,實際值與顯示值均為「地區」欄,如下圖所示:

4)設定「銷售員」元件的「資料字典」為資料查詢 ds2 ,實際值與顯示值均為「銷售員」欄,如下圖所示:

2.2 準備列印範本

需要準備一張列印範本,用於接收查詢傳入的參數,並過濾出相應資料。

2.2.1 建立資料集

建立資料集 ds1 ,SQL 查詢語句如下:

其中,SQL 語句中定義了兩個資料集參數地區 和銷售員,用於接收傳入的參數,並過濾出相應的資料。

select * from 銷量 where 地區='${地區}' and 銷售員='${銷售員}'

2.2.2 設計報表

設計列印範本,將資料集中的欄位拖到對應儲存格中,如下圖所示:

2.3 新增點選事件

開啟 2.1 節準備的查詢範本,選中 C1 儲存格,新增一個點選事件。

  • 在參數欄中新增參數 a,參數值為公式$地區

  • 新增參數b,參數值為公式$銷售員

  • 新增下面的 JavaScript 程式碼,如下圖所示:

JavaScript 程式碼如下:

var printurl="http://localhost:8075/webroot/decision/view/report";
var reportlets ="[{reportlet: '列印範本.cpt', 地區:'"+a+"', 銷售員:'"+b+"'}]";

var config = {
printUrl : printurl,
isPopUp : true,
// 是否彈出設定視窗,true為彈出,false為不彈出
data :{
// 多範本格式: [{reportlet: 'name.cpt', a: 'a1'}, {reportlet: 'name.cpt', b: 'b1'}] 同樣的範本會出現多頁
// 單範本格式: [{reportlet: 'name.cpt', a: 'a1', b: 'b1'}] 同樣的範本只會有單頁
reportlets: reportlets // 需要列印的範本列表
},
printType : 0// 列印類型,0為零用戶端列印,1為本地列印

// 以下為零用戶端列印的參數,僅當 printType 為 0 時生效
//ieQuietPrint : false,// IE靜默列印設定 true為靜默,false為不靜默

// 以下為本地列印的參數,僅當 printType 為 1 時生效
printerName : 'Microsoft Print to PDF'// 印表機名
pageType: 0// 列印頁碼類型:0:所有頁,1:當前頁,2:指定頁
//pageIndex: '1-3', // 頁碼範圍。當 pageType 為 2 時有效
copy: 1// 列印份數
};
debugger;
FR.doURLPrint(config)
显示代码

2.4 效果預覽

填報預覽查詢範本,查詢出需要列印的資料,點選「列印」按鈕,即可列印相關報表,如下圖所示:

2.5 已完成範本下載

點選下載查詢範本:查詢範本.cpt

點選下載列印範本:列印範本.cpt

3. 範例二:列印多個銷售員的業績報表

3.1 準備查詢範本

需要準備一張查詢範本,用於選擇需要列印的資料,並在列印時將篩選出的資料作為參數,傳遞給列印報表。

3.1.1 建立資料集

1)建立資料集 ds1 ,SQL 查詢語句如下:

select * from 銷量

2)建立資料集 ds2,用於查詢所選地區下的銷售員名稱,SQL 語句如下:

select 銷售員 from 銷量 where 地區= '${地區}'

3.1.2 設計報表

1)範本樣式如下圖所示,其中:

  • 設定 A2 儲存格為下拉框元件

  • 設定 B2 儲存格為下拉複選框元件

  • 設定 C1 儲存格為按鈕元件,如下圖所示:

2)選中 A2 儲存格,設定「下拉框」元件的「資料字典」為資料庫表 FRDemoTW 中的「銷量」表,實際值與顯示值均為「地區」欄,如下圖所示:

3)選中 B2 儲存格,設定「下拉複選框」元件的「資料字典」為資料查詢 ds2 ,實際值與顯示值均為「銷售員」欄。

設定回傳值類型為「字串」,且分隔符為',',如下圖所示:



3.2 準備列印模板

需要準備一張列印範本,用於接收傳入的參數,並過濾出相應資料。

3.2.1 建立資料集

建立資料集 ds1 ,SQL 查詢語句如下:

其中,SQL 語句中定義了兩個資料集參數地區 和銷售員,用於接收傳入的查詢參數,並過濾出相應的資料。

SELECT * FROM 銷量 where 地區='${地區}' and 銷售員 in ('${銷售員}')

3.2.2 設計報表

設計列印範本,將資料集中的欄位拖到對應儲存格中,如下圖所示:

3.3 新增點選事件

開啟 3.1 節準備的查詢範本,選中 C1 儲存格,新增一個點選事件,如下圖所示:

JavaScript 程式碼如下:

contentPane.stopEditing();
var printurl = "http://localhost:8075/webroot/decision/view/report";
var reportlets = '[' + contentPane.getCellValue(011).split('\',\'').map(function(i{
return '{reportlet: \'多值列印範本.cpt\', 地區:' + contentPane.getCellValue(001) + ',' + '銷售員:' + i + '}'
}).join(',') + ']';
var config = {
url: printurl,
isPopUp: false,
data: {
reportlets: reportlets //將參數放到data裏面傳到指定的URL中
}
};
FR.doURLPDFPrint(config);
显示代码


3.4 效果預覽

填報預覽查詢範本,選擇需要列印的資料,點選「批量列印」按鈕,即可列印相關報表,如下圖所示:

3.5 已完成範本下載

點選下載查詢範本:多值查詢範本.cpt

點選下載列印範本:多值列印範本.cpt


附件列表


主題: 報表專題
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

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

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

不再提示

4s后關閉

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

反馈已提交

网络繁忙

反饋已提交

網絡繁忙