数据集参数

编辑
  • 文档创建者:加菲喵
  • 浏览次数:57341次
  • 编辑次数:15次
  • 最近更新:Kevin-s 于 2019-05-30
  • 1. 描述

    类似通信、监控行业,每天都有海量数据生成,数据库表中总数据量非常大,而报表中往往只要当天的几百条数据就可以了。

    如果使用模板参数,就需要先取出所有数据,再进行过滤,取数+过滤,将消耗大量时间;

    1)简单应用

    可以在定义数据集 SQL 的时候,直接使用 where 条件过滤出需要的数据,从而大大缩短报表取数时间,类似下面的 SQL:

    SELECT * FROM 销量 where 地区 = '${地区}'

    2)带公式的应用

    数据集 SQL 中可以使用参数宏${}动态地生成过滤条件,${} 中的语句在FineReport报表中执行,将${}的执行结果与sql语句拼接起来形成最终的查询语句,传递给数据库执行,可以使用多个${},如下语句:

    SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}

    ${}中可以使用所有内置的FR公式,如if函数;

    ${}中除了 FR 内置的函数名、常量外,其他变量就是数据集参数

    如上 SQL 语句,if公式是FR内置的公式,变量 area 就是数据集参数,如果len(area)!=0,即 area 参数不为空,比如说 area 的值为华东,那么 if 语句的执行结果为and 货主地区='华东',然后再把这句话拼接到 SQL 语句当中,SQL 语句就变成:

    SELECT * FROM 订单 where 1=1 and 货主地区='华东'

    2. 制作步骤

    2.1 打开报表

    打开报表%FR_HOME%\webroot\WEB-INF\reportlets\doc\Primary\GroupReport\分组报表.cpt

    2.2 定义数据源参数

    修改数据集 SQL 语句为SELECT * FROM 销量 where 地区 = '${地区}',点击下方的刷新按钮显示出参数,默认值设置为“华北”:


    注:在数据集 SQL 语句中,使用 ${para} 做为一个参数宏,其中变量para为参数名,若字段值为字符串则加上引号如'${para}'

    2.3 过滤数据

    若参数地区的值为华北,那么 ${地区} 这个参数宏最终的值就是华北,数据集 SQL 即为SELECT * FROM 销量 where 地区 = '华北'

    可以看出,数据集取数时就会根据数据源参数过滤出需要的数据,因此不需要额外设置数据列过滤了。

    2.4 制作参数界面

    切换到参数界面,添加参数。


    注:如果参数控件是通过点击右上角的以下参数未生成按钮生成的,那么数据集参数的默认值,可以传到参数面板的控件中。

    注:如果参数控件是直接添加控件,修改控件名和参数绑定的,数据集参数的默认值无法传递到参数面板的控件中,控件默认值需要另外设置,详细请参照控件默认值

    3. 效果预览

    保存报表并分页预览,实现效果如下:


    4. 已完成模板

    模板效果在线查看请点击 Parameter_1.cpt

    已完成的模板,可参见%FR_HOME%\webroot\WEB-INF\reportlets\doc\Primary\Parameter\数据集参数.cpt

    注:若模板中有多个数据集并且定义的参数名相同,在参数界面中可以通用一个参数控件。即若数据源参数名称相同,只需定义一个参数控件即可。

    附件列表


    主题: 参数入门
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]