博计报表 参数报表实现默认查询的两种方法
参数报表功能比较强大,可以根据自己的需求把需要的数据查询出来,但是仍旧难以满足越来越复杂的业务需要,比如要实现默认条件的查询。本文介绍两种实现默认查询的方法。
第一种方法:给参数报表中参数设置默认值
大致思路:给参数报表中的参数设置默认值,报表在计算的时候就会以这个参数的默认值为条件进行查询。
以任意带参数的报表为例在参数报表中设置默认值,如下图给参数”area”设置默认值为”华北”。

浏览报表的时候就会查询出货主地区为华北的数据。
第二种方法:利用动态宏设置默认查询条件
大致思路: 给参数模板定义一个是否查询的标志,在参数报表里用动态宏根据查询标志的值进行判断,然后在数据集中调用动态宏,如果是点击”查询”按钮进行查询的,动态宏就给数据集返回空;如果是点击”查询”按钮进行查询的,动态宏就返回数据集默认查询的条件。这种方法常用于默认不查询任何数据,就是动态宏返回给数据集”and 1=2″。
第一步:制作参数报表
新建一个空白报表,另存为”参数查询.raq”,新建一个参数,命名为”area”,用于接收参数模板中传递过来的货主地区。新建一个数据集,sql语句为:
SELECT 订单.订单ID,订单.货主国家,订单.货主地区,订单.货主地址 FROM 订单 WHERE 订单.货主地区 =? or ? is null
给数据集增加两个参数”area”。单元格中输入的内容如下:

新建一个空白报表,另存为”参数查询_arg.raq”,把报表设置为填报表,A1单元格输入的内容:”请选择货主地区:”。给B1单元格设置下拉列表框,如下图。

选中B1单元格,设置变量名为”area”。

第二步:判断参数模板中是否选择了条件并点击”查询”
在设计器中打开”参数查询_arg.raq”,给报表追加一列C列,选中C1单元格,设置它的变量名为”selectFlag”,如下图。

设置C1单元格的值为”1″。
然后把C列的宽度设置为1,把C列隐藏起来,注意这里不是设置列的可视属性。
第三步:设置动态宏
在设计器中打开报表”参数查询.raq”,增加一个参数”selectFlag”,

增加动态宏”ifSelect”,如下图。

动态宏的意思是如果用户点击了”查询”按钮,就返回空;没有点击”查询”按钮,就返回默认查询条件:”1=2″,意思就是不查询任何数据。然后在数据中调用这个宏。

第四步:浏览报表
在IE中浏览报表”参数查询.raq”,可以看出没有查出任何数据。
从上面的两种方法可以看出,第一种方法比较适合参数设置默认条件,第二种方法比较适合默认不查出任何数据。以后遇到类似的需求就可以用上面的方法实现了。