FR多sheet的内置检验和JS校验, 数据集范围校验

在对多sheet进行填报的时候,往往需要从其他sheet取数参与计算,或者以其他sheet的数据为依据,对当前sheet的填报数据进行一定的约束,这个就是跨sheet校验。

跨sheet校验应用在两个方面:提交校验js校验

提交校验

在提交数据之前对数据进行校验,比如说,当前模板有2个sheet,sheet1里面的某个数据与sheet2里面的某个数据的和必须满足特定条件。

如下图,点击模板>报表填报属性,切换到数据校验标签,添加一个内置校验,校验公式为sheet1!A2+sheet2!B2>1000,校验出错信息为shee1的A2单元格与sheet2的B2单元格和值太小:

注:校验公式中直接跨sheet取数进行计算,跨sheet取数详细请查看多sheet数据计算

js校验

使用js对多sheet进行校验,原理是将其他sheet的数值通过FR取数方法赋值给js里面定义的参数,然后参与校验。

比如说,在编辑sheet2里面的B2单元格的时候,如果sheet1的A2单元格与sheet2的B2单元格的和小于1000,则提示警告,如下图:
222

给sheet2的B2单元格的控件添加一个编辑结束事件,如下图:

js代码为:

扫描二维码关注公众号,回复: 2755622 查看本文章
  1. var para=contentPane.getCellValue(0,0,1);//获取sheet1里面的A2单元格数据  
  2. var value=this.getValue();//获取当前单元格数据  
  3. var sum=parseInt(para)+parseInt(value);//将字符串转换为整形并求和  
  4. if(sum<1000){alert("shee1的A2单元格与sheet2的B2单元格和值太小");} 

由上图的js代码可知,在js中进行跨sheet校验,获取其他sheet的单元格值可通过方法contentPane.getCellValue(sheet号,列号,行号); //sheet号,列号,行号是从0开始来获取,详细请参照填报预览JS实例

其它JS比较检验范例:

对B2单元格控件设置事件编辑,添加编辑结束事件,具体JS代码如下:

  1. var D2value = contentPane.curLGP.getCellValue("D2"); //获取D2单元格的值  
  2. if (this.getValue()*1 < D2value){     //判断输入值是否小于D2单元格值  
  3.    FR.Msg.alert(FR.i18n.Alert, "该值不能小于" + D2value);     //弹出对话框  
  4.    return false;  
  5. }  

其中获取填报单元格的值的详细介绍请查看填报预览JS实例

对B3单元格控件进行事件编辑,添加编辑结束事件,具体JS代码如下:

  1. var D3value = contentPane.curLGP.getCellValue("D3"); //获取D3单元格的值  
  2. if (this.getValue()*1 != D3value){     //判断输入值是否与D3单元格相等  
  3.    FR.Msg.alert(FR.i18n.Alert, "该值应等于" + D3value);     //弹出对话框  
  4.    return false;  
  5. }  

其中,D3value是自定义变量,用于获得D3单元格的值,if语句是用来判断该单元格输入后的值是否等于D3value,如果不是是则弹出警告:该值应等于abc。

2.数据集检验:检验某个单元格值是否在数据范围内

 内置校验写法如下:INARRAY(D2,zzdyxy.group(diqu))>0  ;//D2的值要在数据集zzdyxy的diqu列的范围内,否则检验不通过。

引用数据集中的某个列固定写法:数据集名.group(列名)

3.填报单元格重复值检验:

根据要检查的重复值的列,分别取两个单元格:一个B6引用单元列数组求个数如:count([A2]) 为[A2]扩展出数组,

另一个D6为去掉重复值后的个数count(UNIQUEARRAY([A2]))

然后内置检验公式 B6=D6  提示A2重复

其它公式套用:

在B5单元格设置公式:JOINARRAY([A3], ""),取数组原始字符串,不加间隔符号,

在D5单元格设置公式:JOINARRAY(UNIQUEARRAY([A3]), ""),取数组去掉重复值后的字符串,不加间隔符号。

4.检验可强提交 在填报WEB属性自定义工具栏里面设置(只提交当前sheet也在其中)

猜你喜欢

转载自blog.csdn.net/DN_XIAOXIAO/article/details/81255595
今日推荐