报表知识库
我要提问

润乾报表数据集中参数和宏的使用方法

在设计一张报表时,报表中的数据会经常变化,因此常常需要根据一些条件来过滤出想要的数据。这就需要通过参数的形式控制报表中的数据。

接下来的例子展示如何在数据集中加入参数使得报表变得更加灵活。

第一步:单击主菜单中的【配置】->【参数】。

弹出”参数编辑”窗体,如下图所示:

第二步:点击【增加】按钮,新增一个参数,默认名称为”arg1″,名称可根据自己的需要来命名。

这里把【名称】和【描述】分别改成”name”和”员工姓名”,【数据类型】我们选择默认的”字符串”。如下图所示:

同样的方法增加一个”奖金”参数,【数据类型】设置为”数值型”。

同样的方法增加一个”性别”参数,【数据类型】设置为”字符串”。

第三步:单击主菜单中的【配置】->【数据集】,弹出【数据集设置】窗体,如下图所示:

选择ds1,点击【编辑】按钮,弹出SQL编辑器,可以在此对ds1数据集进行修改。

选择【检索条件】标签页,设置检索条件(EMPLOYEE.EMPNAME like ? and EMPLOYEE.BONUS >? and EMPLOYEE.BIRTHDAY >? and EMPLOYEE.SEX =?),如图所示:

选择【参数】标签页,点击【增加】按钮,增加四个参数与检索条件中的”?”匹配。

点击【确定】按钮,完成参数的设置。

第四步:在设计器中预览报表,点 按钮,会弹出”设置报表参数窗口”,录入相关信息,如图所示:

点击【确定】按钮查询出姓名中包含”小”字、奖金高于200、出生日期大于”1960-01-01″且性别为”男”的员工信息,(注:性别在数据库中是以编码的形式存储的,”1″代表男,”2″代表女)。查询结果如下图所示:

第五步:此时的报表已经可以实现根据参数的不同而查询出不同的内容了,可是很多时候用户往往希望参数值不录的时候选出所有记录,接下来我们来需要对报表做一点修改,来实现这一功能。

点击主菜单中的【配置】->【数据集】,弹出”数据集设置”窗体,选择ds1,点【编辑】按钮,弹出SQL编辑器,将【检索条件】修改为:(EMPLOYEE.EMPNAME like ? or ? is null) and (EMPLOYEE.BONUS>? or ? is null) and (EMPLOYEE.BIRTHDAY >? or ? is null) and (EMPLOYEE.SEX =? or ? is null)。如图所示:

然后在【参数】标签页中按照问号顺序,写入参数名或含参数的表达式,如下图所示:

此时预览报表,不录入任何参数即可查询出所有记录。

接下来,需要处理这样的情况:

在这里表中数据有空的情况存在,如果想抓取不为空的记录,就需要在sql的where条件中加入参数来过滤。

设置的sql如下:

参数为表中的字段名,即替换后的sql表示抓取某个字段不为空的记录:

这时浏览数据会发现空的记录也被抓取出来了,如下图所示:

这是因为当一个字符串判断”not null”时,返回的永远是true,所以这种sql语句不能用参数。

解决这个问题需要用到宏。

宏的使用总体上来说和参数没有太大的区别,设置一个宏如下图:

把宏添加到sql语句中:

这时结果如下:

在很多时候参数和宏是可以并用的,而且在一些参数无法达到效果的时候,宏往往能轻而易举的解决。

关于参数和宏的更多用法,请参考润乾设计器帮助文档中的相关介绍。