背景需求:
客户经常需要自动计算俩个日期之前的差值。
这个通过写JS可以简单的实现。
解决思路与操作方法:
Js代码如下:
<script language="javascript">
function daysBetween(DateOne,DateTwo)
{
var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);
var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));
var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));
var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);
return Math.abs(cha); //返回差的绝对值。
}
</script>
右击--填报属性,报表单元格的自动计算写为 :
daysBetween(${单元格}.toString(),${单元格}.toString())
背景需求2:
参数模板校验结束时间不能大于开始时间。
解决思路:
计算两个下拉日历的差,如果开始时间减去结束时间为负数,说明是结束时间小于开始时间。 相反为正数,说明结束时间大于开始时间。则给一个提示。结束时间不能大于开始时间。
js代码同上, 只需将最后面的 返回的差的代码改为:
return cha;
然后在参数模板的结束日期的下拉日历的单元格设置校验(右击-----填报属性-----校验),校验表达式为:
daysBetween(${单元格}.toString(),${单元格}.toString())<0 即可。