如何使用参数模板设置的条件默认值实现首次查询

如下图,“订购日期”(WEB 变量名为“orderDate”)设置“下拉日历”编辑风格,且在参数模板设置了默认值。

imagepng

首次访问到报表(点参数模板的“查询”按钮前)的时候,想要结果报表按上面的默认值查询。

根据报表发布的原理,参数模板与结果报表都会计算,但两者独立,如果不点参数模板的“查询”按钮,其参数值是不会传递到结果报表的,这该如何处理?还要兼容后续点“查询”按钮的情况。

下面,我们根据不同的默认值类型,分情况介绍解决方式:

固定默认值

指的是给定的默认值是个固定不变的,比如最开始的截图,默认值始终是“2018-12-21”。

对于这种情况处理比较简单,我们只需要将结果报表定义的对应参数默认值写死就可以了,比如

imagepng

这样,两边默认值只要设置成一样的,也就达到了我们想要的结果,如上结果报表的数据集为:

imagepng

imagepng

指定参数为“orderDate”,用结果报表的参数默认值完成首次查询。

动态默认值

比如,我们把第一个截图中的默认值改为:=date(now()),即默认是取当天的日期。

imagepng

这个时候,如果我们按照静态默认值的处理方式,只是简单的把结果报表定义的参数改成动态参数,并同时修改成相同的表达式。

imagepng

首次访问结果是对了,但是如果点“查询”按钮,就不能按照传来的值查询了,因为动态参数的功能是不支持接收外部传来的值的,只能用普通参数类型来接收。

怎么改呢?

1、 增加辅助的动态参数

orderDate 依然还是普通参数,用于接收参数模板传来的值。另外,增加一个动态参数“oDate”(名字可自定义)

imagepng

表达式为:if(@orderDate==null,date(now()),@orderDate) ,意思为:如果判断传来的 orderDate 为空(不点查询时,结果报表里的 orderDate 始终为空),就赋值为当天日期,否则就用传来的值。

2、 数据集内引用辅助动态参数

imagepng

由“orderDate”改为”oDate”

3、 发布看下结果

test2gif

首次均用当前日期,当参数模板修改参数值并点查询后,结果报表用新参数值查询。