使用场景Sodi数据分析系统中的报表默认可以查询昨天的数据。当用户选择日期时,是否可以根据选择的日期查询数据?实现方式搜帝报表针对这个需求提供了两种实现方式:1.在参数模板中使用表达式给参数赋值,然后通过js自动调用查询按钮的点击事件。第一步:参数模板如下:默认值表达式为=string(elapse(now(),-1),"yyyy-MM-dd")注:日期类型参数一般使用下拉日历,并且下拉日历的设置必须和表达式的返回值一致。例如,如上图所示,使用“年、月、日”。如果使用“年月日时分秒”,直接使用elapse(now(),-1)即可。第二步:复制修改showReport.jsp,通过复制修改后的jsp调用需要自动查询的报表。例如复制并改名为showReport2.jsp,在script标签中添加调用查询按钮点击事件的代码_submit(form1)。第三步:删除rerport:html标签,避免默认只执行一次报表,浪费效率。2、设计报表时,使用动态参数判断传入的公共参数值。如果常用参数值为空,则使用当前日期计算动态参数值,并在报表中使用数据集中或单元格中的动态参数值。第一步:新建一个公共参数,值表达式为空。第二步:新建一个动态参数,值表达式是判断普通参数是否为空,如果为空则使用计算出来的日期,如果不为空则使用普通参数的值。if(beginDate==null,elapse(now(),-1),beginDate)第三步,参数模板也需要显示与报表动态参数相同的值,需要在参数中设置表达式template,和第一个两个实现的设置是一样的。综上所述,两种方式都能满足用户需求。第一种方法需要修改jsp中的js,第二种方法不需要修改jsp;第二种方法需要添加更多对应的动态参数,并且想要显示参数模板的参数值,需要设置动态参数和参数模板的默认值,使其与报表数据保持一致。两种方式各有千秋,大家可以根据自己的需要选择使用。
