参数校验+参数联动应用举例
需求案例一
需求来源:宜贷网
需求概述:在参数框中有开始日期和结束日期两个参数,满足以下四个需求:
1、开始日期或者结束日期任意选择一个日期查询该日期数据;
2、开始日期和结束日期不能同时为空;
3、结束日期不能大于开始日期31天;
4、开始日期默认前一天日期;
实现方案:
通过一个隐藏参数(@yincang)来控制开始时间和结束时间的间距,此时应用在具体的报表中应该通过过滤条件中if语句实现。
实现步骤:
(1)拖入两个时间参数组件(@start和@end)和一个隐藏参数(@yincang)
(2)设置开始日期(@start)的默认值为前一天
(3)设置参数校验条件,实现开始日期和结束日期不能同时为空
(4)将开始时间31天后的值传递给隐藏参数(@yincang),并设置为隐藏
(5)设置隐藏参数的默认值为开始日期31天后的值
(6)设置结束日期的校验条件,实现结束日期不大于开始日期31天
针对第一个需求,实现方法是在过滤条件中写if语句,具体if语句如下:if(@start<>"" and @end="",XXB.BBQ=@start,if(@start="" and @end<>"",XXB.BBQ=@end,XXB.BBQ>=@start and XXB.BBQ<=@end));
需求案例二
需求来源:深圳中航
需求概述:根据不同用户控制对参数的校验,例:某一用户登录,必须选择维下拉中的数据,而另一用户登录时可选可不选。
实现方案一:
根据登录用户的不同将维输入框内容传递给输入框,通过输入框间接控制维下拉框是否为空。
实现步骤:
(1)拖入维下拉框(@cs)和输入框(@cs1)
(2)输入框(@cs1)设置为非空
(3)设置参数行为,并对相应用户赋权
此方案实现了客户的需要,但在测试中出现了一些问题,将维下拉框输入的内容删除后,无法联动输入框内容删除,通过补丁(JIRA: ESENBI-10092)得到解决。基于已有方案,进一步研究得到方案二。
实现方案二:
在方案一的基础上改进,通过判断两个参数的长度,避免方案一中的问题。同样拖入维下拉框(@xzqh)和输入框(@yc),通过两个参数的长度是否大于0实现。
实现步骤:
(1)拖入维下拉框(@xzqh)和输入框(@yc)
(2)输入框(@yc)设置默认值
(3)维下拉(@xzqh)校验条件
(4)维下拉框参数行为