在报表开发过程中,为了保证信息准确无误入库, 我们经常会被要求对报表增加校验以保证数据类型和格式的正确。比如:工资金额最多只允许包含两位小数、邮政编码必须是全数字组成的 6 位数且首位数字不能是 0 等等。面对多种多样、层出不穷的校验需求,如果都写 js 来实现的话,那工作量真是…(你懂得),那么有没有一款报表神器,能轻松搞定这些校验呢?
呵呵呵…
下面我就给大家推荐一下解救我的神器—润乾报表,此神器提供了强有力的校验方法,例如通过设置单元格的数据类型、在填报单元格校验或格间校验里写校验公式、自定义有效性验证脚本,等等。利用好这些手段,就能摆脱大量写 js 的命运。
下面我们就分类说明一下,润乾报表是怎么实现各种校验的。
数据类型校验 – 栗子 1:
要求:
工资录入的数据必须是数值。
设置如下:
选中工资所在单元格 H3,右侧属性 -- 表达式 -- 数据类型
,选择数值型即可。
效果:
当工资输入非数值时,单元格失去焦点后,便会弹出提示“请输入数值!”,如下图
单元格类型校验 - 栗子 2:
这个栗子我们从多个较多进行分析讲解:
角度 1:
要求在原来数据类型的基础上,限定工资最多可录入两位小数。
设置如下:
菜单栏 中选择 填报 – 单元格校验
,新增单元格校验表达式,其中,
表达式为:(/^\d{0,8}\.{0,1}(\d{1,2})?$/).test(H3)
意为:H3 单元格内容必须包含 0 ~ 8 位整数,可带 0 ~ 1 个小数点和 1 ~ 2 位小数
出错提示为:工资金额,最多两位小数 如下图
效果:
当输入工资金额小数多于两位时,单元格失焦后,便会弹出预先指定提示信息,如下图:
角度 2:
要求邮政编码必须输入 6 个数字组成的数值串且首位数值不能为 0 。
设置如下:
菜单栏 中选择 填报 – 单元格校验
,新增单元格校验表达式,其中
表达式为:D5.toString().match(/^[1-9]\d{5}$/
意为:D5 单元格的字符串,首位必须是 1-9 之间的数字,其 5 位后随意取 5 位数字。
出错提示为:邮政编码必须是首位不为 0 且长度需为 6 位的纯数字 如下图
效果:
当输入邮政编码输入数值串为数超出 6 位且首位数字为 0 时,单元格失焦后,便会弹出预先指定提示信息,如下图:
角度 3:
要求员工表中姓名列必须填写,不能为空。
设置如下:
菜单栏 中选择 填报 – 单元格校验
,新增单元格校验表达式,其中
表达式为:C3!=null&&C3!=""
出错提示为:姓名不能为空! 如下图
效果:
当管理员录入员工信息忘记输入姓名时,单元格失焦后,便会弹出预先指定提示信息,如下图:
有效性校验脚本 – 栗子 3:
要求:
筛选面板中选择的截止日期不能早于起始日期,否则给出提示且不能进行查询。
设置如下:
筛选面板 菜单栏 报表 报表属性 其他选项卡,有效性校验脚本
中写入方法,如下图:
其中,startDate 为起始日期的 web 变量名,endDate 为截止日期的 web 变量名。
方法为:
if (getParamValue(“startDate”) > getParamValue(“endDate”)){
alert(“起始日期不能大于截止束日期!”);
return false;
}
return true;
效果:
当筛选面板中选择的起始时间早于截止时间时,点击查询便会弹出提示,提醒用户修改。如下图
格间校验 - 栗子 4:
要求:
报表组中的关联项需要保持一致,或者计算后结果保持一致。例如:报表组中包含订单表和订单明细表,那么订单明细表中所有产品的订单金额总和就必须跟订单表中的订单金额保持一致,否则,给出错误提示不允许数据入库。
设置如下:
报表组中 菜单栏 填报 格间校验
,新增格间校验表达式,其中
表达式为:订单!H6== 订单明细!G5
出错提示为:订单明细中总金额和订单中金额不一致!
注:表达式中“订单”和“订单明细”分别代表报表组中订单表和订单明细表的 sheet 页名称,见下图标注,H6 和 G5 分别对应订单表和订单明细表中的单元格,感叹号为连接符
效果:
订单明细中,所有产品金额总和为 1810,如下图:
那么如果在订单明细中输入其他值,在提交保存时,就会给出错误提示。如下图: