内置检验(填报时联立多字段与数据库中数据进行对比,相同报错无法提交入库)
当填报数据无法确定明确主键,需要联立多个字段作为新主键与数据库中已存在的数据条进行对比时,假设需要拼接的字段为A和B,在报表中对应的单元格是姓名、学科。设计思路:
1、报表上拼接字段:
先在报表单元格上使用函数CONCATENATE(姓名单元格,学科单元格)将两个字段拼接起来,添加concatenate()函数的单元格记得要扩展原值。
记得当真正部署到正式系统上时要把D3隐藏掉,对用户来说此列不需要看到的。
2、数据集拼接相应字段:
在报表新建一个数据集查询ds1,将数据库中对应的字段也拼接起来查询(可以将拼接起来的新字段取个别名),oracle数据库是select (A||B) as newkey from testtable。
此时数据准备工作已经做好了(注意要实现的功能是填报点击数据检验按钮或者点击提交如果填写的A、B的值与数据库中的完全一致则无法提交成功,并且报相关错误,报错内容是由自己自定义的。假如数据库中已存在一条数据为A字段值为丽丽,B字段为数学,C字段为80。那么我填报的时候又添了一条一样的数据,姓名值为丽丽,学科为数学,成绩为85,那么提交时会有校验,数据不成功入库,并且报错“数据库中已存在丽丽的数学成绩不要重复录入”。)
3、报表填报属性增加内置校验:
下面点击模板-报表填报属性-添加一个内置校验,校验公式INARRAY(D3,value("ds1",1))==0,假设我将上面提到的concatenate()函数添加到了D3单元格,那么校验公式的含义是把D3单元格扩展出的这一列存为一个数组,遍历与数据集ds1中的第一列做比较,不满足校验公式则提示报错信息。
4、保存填报预览就可以了。 编辑于 2021-9-16 13:36