报表设计器版本 |
---|
since 8.2.0 |
当使用查询控件查询时,控件值为空,需要默认显示全部数据,本文讲解通过动态SQL实现该场景。
本示例通过区域对报表进行查询,其中区域通过输入控件查询,当输入控件没有值时,则默认查询所有数据。。
建立数据集「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的值,并做替换。