[]
在实际应用当中,我们经常会遇到如下需求场景:
当用户不输入报表参数时,报表显示所有数据;当用户输入查询参数时,则按照用户输入的参数值来过滤数据。
报表是通过动态SQL查询来实现此类需求的,接下来就为您介绍此类需求的实现过程。
如下图所示设置参数名称 、 提示文本、数据类型 。然后将参数的允许空白功能打开,并为参数添加一个空的默认值。
设置完成后,单击上方的返回箭头返回到报表设计器当中。
添加基于 WynDemoData 的内嵌数据集。
例如本例中使用SQL语句: select * from 销售明细 where 1=2 ,单击验证按钮,可见获取到18个查询字段。
type=info
提示
此处没有直接使用动态SQL查询语句是因为动态SQL语句不能直接获取到数据库中的字段列表,我们需要先通过静态SQL将需要的字段获取到,然后再改为动态SQL语句。
修改后,单击验证和确定按钮。
本例中使用的动态SQL语句为:
select * from 销售明细 where 1=1 {IIF(@报表参数1 = "", "", " and 销售大区='" & @报表参数1 & "'")}
含义为:如果报表参数1的值为空,则不附加查询条件,否则将加上 and 销售大区=’参数值’ 作为查询条件。
并绑定数据集中的数据字段。
可见报表可以直接打开并展示所有的数据;
单击参数按钮展开查询面板,可添加查询条件进行过滤查询。
type=info
提示
为了更方便地看出实际进行数据查询的SQL语句,我们可以在报表中添加一个文本框组件,并将动态SQL语句粘贴到文本框中,然后再预览报表。
可以看出,当不输入参数时实际生效的SQL语句为:select*from销售明细where1=1
当输入查询条件“东北”时,实际生效的SQL语句为:select*from销售明细where1=1and销售大区='东北'