参数实现数据查询

教学视频

目标

要实现的效果如下图所示:

demo

实现

1.配置参数

在报表设置窗口中,添加三个报表参数,如下图:

image-20211201155842750

2.定义数据集

创建一个包含employee表的数据集,SQL中采用使用报表参数作为数据过滤条件,如下图:

image-20211201155934069

SQL内容如下:

select * from employee where dept_id like ${$deptId} and employee_name like ${$employeeName} and employee_id like ${$employeeId}

在上面的SQL中使用到了表达式,在SQL中使用表达式需要将表达式放在${}中,比如上面的SQL中,三个like条件后面都使用了表达式,分别引用参数deptId、employeeName以及employeeId。

点击窗口底部的预览SQL数据,可以看到预览的数据内容为空,这是因为SQL中使用的三个参数值都是空的,导致条件不匹配,所以取不到数据。

实际使用时,如果需要实现默认显示所有数据功能的话,我们可以对上面的SQL数据集中的SQL进行调整,使用表达式来动态拼装SQL,调整后的SQL内容如下:

${
    var whereStr="";
    if($deptId){
     whereStr="dept_id like ${$deptId}";
    }
    if($employeeName){
        if(whereStr){
            whereStr=whereStr+" and employee_name like ${$employeeName}";
        }else{
            whereStr="employee_name like ${$employeeName}";
        }
    }
    if($employeeId){
        if(whereStr){
            whereStr=whereStr+" and employee_id like ${$employeeId}";
        }else{
            whereStr="employee_id like ${$employeeId}";
        }
    }
    if(whereStr){
        return "select * from employee where "+whereStr;
    }else{
        return "select * from employee";
    }
}

在SQL数据集中,如果把SQL放在${}中就表示内容为脚本,上面的SQL内容就放在${}当中,引擎就会将SQL内容作为脚本来执行。

在上面的脚本当中,对三个参数进行了判断,如果参数值不为空,那么就将参数放入SQL的条件查询当中。

在脚本当中,如果某个值为null或空字符串,在条件判断中会返回false,否则会返回true,所以上面的SQL脚本中if条件判断可以直接对参数名称进行判断。

点击对话框底部的预览SQL数据按钮,可以看到预览的内容不再为空。

3.设计报表

报表中保留两行三列,并绑定数据集字段到相关单元格,如下图所示:

image-20211206114058023

选中A1单元格,在右边属性面板中切换到渲染标签页,添加一名为hide row的条件渲染项,如下图:

image-20211206114229127

该条件渲染项条件左值表达式为rows(),用于取当前报表的所有行数,比较符为等于,条件右值表达式为2,表示如果当前报表所有行数等于2,那么这个条件渲染项就满足,条件满足后执行设计当前行行高为0,也就是隐藏当前行。

高行为0或负值时,那么在运行时该行将会被隐藏。

复制这条条件渲染项,选择A2单元格,将复制的条件渲染项粘贴到A2单元格的条件渲染项当中,如下图:

demo

通过在A1和A2单元格添加条件渲染项,这样在当前报表数据集中没有加载到数据时这两行将不会显示,保存预览就可以看到当前报表内容为空,这是因为数据集没有加载到符合条件的数据,所以整个默认的两行会被隐藏掉,导致报表内容为空。

4.定义查询表单

点击报表上方的查询表单按钮,将工具栏的三个报表参数拖拽到工作区,同时将查询和重置按钮也拖拽到工作区,并设置好它们的属性、调整好它们的位置,如下图:

image-20211206120252789

查询时要实现模糊查询效果,因此在定义每个参数绑定元素属性时,需要将值前缀和值后缀中添加一个%,以便于查询提交时自动在输入参数中添加%%功能,以实现SQL中的模糊查询效果。

保存预览,就可以实现预期效果。

results matching ""

    No results matching ""