反馈已提交

网络繁忙

批量打印传递多个参数

  • 文档创建者:Suki陈
  • 历史版本:1
  • 最近更新:Suki陈 于 2023-06-12
  • 1. 概述

    1.1 版本

    报表服务器版本
    11.0

    1.2 应用场景

    对于一张数据量较大的模板,用户希望可以根据具体需求筛选出需要打印的数据,再进行打印。

    对于多张模板,用户可根据一张查询模板筛选出需要打印的数据,并将这些数据作为参数,动态传递给其他模板,实现一键打印所有相关报表内容。

    1.3 实现思路

    本文示例:

    例如有一张全国销售人员的业绩报表,用户可以选择打印某个地区下的某个销售员的业绩报表,或者同时选择多个销售员的业绩报表进行打印。

    实现思路如下:

    示例实现思路

    示例一:打印某个销售员的业绩报表(参数只传递一个值)

    1)新建一张查询模板,查询需要打印的数据至当前页面上

    2)新建一张打印模板,用于打印过滤出的数据

    3)设置点击事件:

    • 获取查询页面上的数据

    • 并将数据作为参数传入至打印模板,过滤出相关数据

    • 调用打印接口 FR.doURLPrint(config)  进行打印

    示例二:打印多个销售员的业绩报表(参数可传递多个值)

    1)新建一张查询模板,选择需要打印的数据

    2)新建一张打印模板,用于打印过滤出的数据

    3)设置点击事件

    • 获取、分割查询页面上的销售员数组

    • 每个销售员和地区组合成多组打印参数

    • 将打印参数传入至打印模板,过滤出相关数据

    • 调用打印接口 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)设置「地区」控件的「数据字典」为数据库表 FRDemo 中的「销量」表,实际值与显示值均为「地区」列,如下图所示:


      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 单元格,设置「下拉框」控件的「数据字典」为数据库表 FRDemo 中的「销量」表,实际值与显示值均为「地区」列,如下图所示:

          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(0, 1, 1).split('\',\'').map(function(i) {
          return '{reportlet: \'多值打印模板.cpt\', 地区:' + contentPane.getCellValue(0, 0, 1) + ',' + '销售员:' + i + '}'
          }).join(',') + ']';
          var config = {
          url: printurl,
          isPopUp: false,
          data: {
          reportlets: reportlets //将参数放到data里面传到指定的URL中
          }
          };
          FR.doURLPDFPrint(config);

          3.4 效果预览

          填报预览查询模板,选择需要打印的数据,点击「批量打印」按钮,即可打印相关报表,如下图所示:

          3.5 已完成模板下载

          点击下载查询模板:多值查询模板.cpt

          点击下载打印模板:多值打印模板.cpt

          附件列表


          主题: 报表专题
          • 有帮助
          • 没帮助
          • 只是浏览
          中文(简体)

          鼠标选中内容,快速反馈问题

          鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

          不再提示

          10s后关闭

          联系我们
          在线支持
          获取专业技术支持,快速帮助您解决问题
          工作日9:00-12:00,13:30-17:30在线
          页面反馈
          针对当前网页的建议、问题反馈
          售前咨询
          采购需求/获取报价/预约演示
          或拨打: 400-811-8890 转1
          qr
          热线电话
          咨询/故障救援热线:400-811-8890转2
          总裁办24H投诉:17312781526
          提交页面反馈
          仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持