我们在5,6两章编制了人员列表,它能够查询出所有在册人员,当登记的人数越来越多时,业务人员会提出按照部门进行查询的需求:使用人员设定部门参数,系统用该参数对全部人员进行过滤……
现在,在设计器中打开人员列表employeelist.raq,好了!
下面我们介绍如何实现……
第一步:引入参数
设计器菜单【配置 ]参数】,在呈现的参数编辑窗口中,点击增加,填写参数信息如下:
【配置 ]数据集】,在呈现的数据集设置窗口,选择ds1,点击编辑,在SQL编辑器中切换到语法tab页
更改原SQL语句为:
SELECT * FROM employee where (? is null or deptid=?)
切换到参数tab页,点击增加,参数列表增加内容如下:
插入语 语法中”?”的作用
在条件语句中加入? is null or deptid=?,其中的?代表在该处引用参数值,引用的参数与“?“的排列顺序相同,本例中,条件语句中出现了两个 “?”,sql参数页中定义了两个参数(dept参数被引用了两次),那么第一个“?”对应第一个参数的输入值,第二个“? “对应第二个参数的输入值.
增加的过滤条件有什么作用?
? is null语句判断第一个参数dept是否为有输入值,如果没有输入值,该语句结果为真( true),deptid=?语句设定过滤条件部门编号等于第二个参数的输入值。它们用or进行连接后,意为:首先检查dept参数是否有输入值,如果有,执行depid=?进行过滤,如果没有值,在? Is null处就返回真值,sql语句返回所有人员记录。
下面,我们检查一下,加入了参数后的报表能否正确查询。
点击
预览查询表。分别设定参数值为1,2,空(什么都不填),检查一下结果正确吗?
第二步:创建参数表单
在A1中输入”单位”
选择B1,属性区域 â变量名 â属性值中输入dept
【配置 ]数据集】,在呈现的数据集设置界面,点击增加,建立dept表的sql检索类型数据集。
【属性 ]报表属性 ]常规】,选择填报类型:可以填报,点击确定
快捷操作:打开报表属性窗口
右键点击行头和列头的交叉点方块,在呈现的右键菜单中选择报表属性。
选择B2,右键菜单â填报属性â常规,进行如下设定:
【填报数据类型】字符串
【编辑风格】下拉数据集,点击设置,在呈现的下拉数据集窗口中,设置数据集:ds1,显示列:deptname,数据列:deptid。
【是否可写】√
注意到了吗?
参数表单的变量名要与结果表(如本例:人员列表)的参数名称(dept)一致。
第三步:发布表单报表
【数据中心控制台 ]报表管理】
首先,登记employeelist_arg.raq 报表文件,在该表的明细分录上,点击修改,呈现的添加报表页面里,修改报表类型为参数表单。点击提交。
打开报表发布,在导航树中选择员工列表节点,设定此节点报表对应的参数表单:选择employeelist_arg。 点击提交。
第四步:检查报表
登录数据中心首页,选择人员列表节点,检查一下,该表是否已有参数表单,试着在参数中选择部门进行查询,看到查询结果了吗?
章后练习:
为人员列表加上出生日期的过滤,查询日期为一个区间,为人员列表加两个参数date1,date2分别作为查询的起止日期。
提示 date1,date2的数据类型为日期型。
参考 SQL语句
SELECT * FROM employee
where (? is null or deptid=?) and
(? is null or birthday >= ?) and (? is null or birthday <= ?)


