历史版本8 :复选控件多值入库不正确 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

在制作填报模板时,经常遇到单元格控件勾选了多个指标,出现以下两种情况:

1)当填报时存在主键时,即做修改操作,提交成功后却只保留了一个值。

举例:

我们在「下拉复选框控件」勾选了「佳佳乐、康富食品、秒生、为全」 4 个指标后提交入库,刷新页面后,发现只保留了一个最后勾选的指标「为全」。

222

2)当填报时不存在主键时,即做添加操作,提交成功后数据库则会录入多条数据。

举例:

使用「产品」表添加一条测试数据进行填报,供应商选择了 3 个指标后提交入库后,发现「产品」表中新增了 3 条数据。

222

而我们希望「下拉复选框控件」多选值提交后,能在一条数据中正确显示多个值,该如何处理呢?

1.2 解决思路

「下拉复选框控件」的返回值类型默认为「数组」,上述两种情况返回值类型需要为「字符串」,所以导致填报结果不正确。

处理方法:将「下拉复选框控件」的返回值类型由「数组」改为「字符串」即可。

注:修改操作和添加操作的解决思路一致。

2. 示例编辑

2.1 准备模板

打开内置模板 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\LineForm1.cpt

1607049669979471.png

2.2 设置下拉复选框控件

将 D3 单元格控件修改为「下拉复选框控件」,返回值类型为「字符串」,其它默认。步骤如下图所示:

Snag_32ac5413.png

2.3 设置数据字典

给 D3 单元格设置「数据字典」,类型设置为「数据库表」,数据库选择「FRDemo」,数据库表选择「供应商」,实际值为「供应商ID」,显示值为「公司名称」。步骤如下图所示:

1607050171104613.png

2.4 设置公式形态

选中 D3 单元格,设置「单元格属性>形态>公式形态」,定义公式形态:sql("FRDemo", "select DISTINCT 公司名称 from 供应商 where 供应商ID in (" + $$$ + ")", 1,null)

步骤如下图所示:

1607051181677906.png

注:公式 sql("FRDemo", "select DISTINCT 显示值字段 from 表名 where 实际值字段 in (" + $$$ + ")", 1,null)  使得鼠标离开单元格时,单元格内容能展示显示值而不是实际值。

2.5 修改字段类型

设计器内置数据库表「产品」中「供应商ID」字段类型为 integer,需要先将其修改为 text 类型,才可以存储字符串类型的值。否则提交入库时会提示报错:数据列类型不匹配。

1607052427902703.png

2.6 效果预览编辑

1)PC端

保存报表,点击「填报预览」,效果如下图所示:

1607053284305948.gif

2)移动端

保存报表,点击「移动端预览」,点击「填报」,App 端和 H5 端均支持,效果如下图所示:

989A657B-A690-475B-9E73-88553C61ECD4.GIF

注:下拉复选框控件、单选按钮组控件、复选框组控件 等多选控件都有类似的问题,请参考本文档处理。

3. 模板下载编辑

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\下拉复选框多选值进行填报时出现的问题及解决方案.cpt

点击下载模板:下拉复选框多选值进行填报时出现的问题及解决方案.cpt