历史版本4 :参数为空查询特定日期的数据 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本功能变更
11.0-

1.2 预期效果

参数为空查询全部”场景下,当数据量较多时,查询全部将会影响性能。其实多数场景下是不需要查询全部的,只要能显示数据,比如显示前一天的数据、显示前一周的数据,即显示某个时间段或时间点的数据。如下图所示:

那参数为空时显示某个时间段或时间点的数据该如何实现呢?

1.3 实现思路

定义参数时通过公式,条件判断使得参数为空时,查询特定时间点或者时间段的数据。

2. 示例编辑

2.1 准备数据

新建普通报表,新建数据集 ds1,SQL 语句为:

select * from 订单 where 1=1  ${if(len(货主地区) == 0,"and substr(订购日期,0,11) = '" + 查询日期 + "'","and 货主地区 = '" + 货主地区 + "'")}

公式解释如下:

where 1=1 表示条件永真,防止没有参数条件时,where 后面没有有效内容导致出错。

${if(len(货主地区) == 0,"and substr(订购日期,0,11) = '" + 订购日期 + "'","and 货主地区 = '" + 货主地区 + "'")}表示:

定义一个参数「货主地区」,通过 if 语句来根据「货主地区」的值分别执行不同的 SQL 语句:

  • 当参数「货主地区」为空时,查询一个特定日期的数据,即又定义了一个参数「查询日期」,SQL 语句相当于:select * from 订单  where 1=1 and substr(订购日期,0,11) = '某个查询日期 ' ,其中 substr 是 SQL 的公式,处理一下数据,将表中的日期数据处理成我们需要的年月日形式。

  • 当参数「货主地区」不为空时,SQL 语句相当于:select * from 订单  where 1=1 and 货主地区 = '货主地区 ',即查询选定货主地区的数据。

如下图所示:

定义好数据集参数后,使用公式给查询日期一个动态特定的值,比如查询前一天的数据。如下图所示:

2.2 设计表格

如下图设计表格,将字段拖入到对应单元格中。

2.3 添加参数控件

1)编辑参数面板,点击「全部添加」,设置下拉框控件的数据字典为订单表中的数据列货主地区。如下图所示:

2)修改标签控件的显示值为货主地区:。如下图所示:

2.4 效果预览

2.4.1 PC 端

保存模板,点击「分页预览」,效果如下图所示:

2.4.2 移动端

App 及 HTML5 端效果相同,如下图所示:

3. 模板下载编辑

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\参数为空查询特定日期的数据.cpt

点击下载模板:参数为空查询特定日期的数据.cpt