反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

参数为空查询特定日期的数据

  • 文档创建者:RosieY
  • 历史版本:3
  • 最近更新:RosieY 于 2023-02-09
  • 1. 概述

    1.1 预期效果

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

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

    1.2 实现思路

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

    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

    附件列表


    主题: 参数应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526