关于给报表里面的prompt设定动态默认值(比如当前月)的问题我之前也发过帖子,只不过是使用javascript来实现,而且无法避免的重复提交问题确实在大家应用当中带来了诸多不便, 所以近期发现另外一条可以避开javascript的方法,遂于大家分享。 首先需要明确的是此法只适用于类型为value prompt的过滤器,时间类型的不可以。举例说明,我们有个月份的prompt数据来自query(select month_id,month_name from period), 使用值为month_id(yyyymm),显示值为(month_name), 编辑month_id 表达式,if (month_id = to_char({sysdate},'yyyymm') then (999999) else (month_id). 然后给月份prompt设定默认值(default choice:999999),最后在列表上面的时间过滤条件里面这么写:if(?month? = 999999) then ([xxx].[time dimension].[month key] = to_char({sysdate},'yyyymm')) else ([xxx].[time dimension].[month key] = ?month?). 到此为止,就可以利用上述方法设定动态的默认值,从而避免了使用javascript带来的双重提交和其他不稳定因素的影响,谢谢。 |