参数为空查询全部数据

1.概述

1.1 支持版本
报表设计器版本
since 8.2.0
1.2 适用场景

当使用查询控件查询时,控件值为空,需要默认显示全部数据,本文讲解通过动态SQL实现该场景。

2.示例

2.1 示例说明

本示例通过区域对报表进行查询,其中区域通过输入控件查询,当输入控件没有值时,则默认查询所有数据。。

2.2 报表设计

建立数据集「ds1」,SQL为:「SELECT * FROM salesman ${length($area) == 0 ? "" : "where area = '" + $area + "'"}」。

其中「${length($area) == 0 ? "" : "where area = '" + $area + "'"}」为动态SQL,解释如下:

  • 整体结构三元表达式,详见: 三元表达式

  • $area,其中area为参数名称,$area为参数引用,表示获取area的值。

  • length($area),获取area值长度。

  • length($area) == 0,当area值长度为0时,值为冒号后的内容,也就是""。

  • 否则值为:"where area = '" + $area + "'", 其中$area会获取area的值,并做替换。

报表设计如下图所示:

参数为空查询全部数据报表设计

注意:参数面板中基础设置,取消勾选「首次预览不计算报表」选项。

点击预览如下图所示:

参数为空查询全部数据报表设计

数据集动态SQL也可以通过if语句实现,SQL为:「SELECT * FROM salesman ${if(length($area) == 0) {return ""}else{return "where area = '" + $area + "'"}}」

  • 整体结构为if语句,详见: if语句

  • length($area) == 0,为判断条件。

  • 如果为真,则执行第一个大括号内容,结果为:""。

  • 否则值为:"where area = '" + $area + "'", 其中$area会获取area的值,并做替换。