1. 概述
1.1 版本
Finereport 版本 |
---|
11.0 |
1.2 应用场景
本文介绍制作模板时,参数控件和填报控件实际值和显示值相关的常见问题及解决方案。
2. 常见问题及解决方案
2.1 分页预览没有实际值和显示值之分
问题描述:
公式形态:if(B2 = min(B2[;!0]), "★" + round($$$, 1), round($$$, 1)),分页预览最后显示的样子为多列出现带★数字,和最小值才为带★情况不符合,其他预览正常。
原因分析:
分页预览时,计算逻辑如下:
首先在语文列判断89是不是89、25、62中的最小值,结果是false,显示原值;
然后在数学列判断25是不是89、25、62中的最小值,结果是true,是显示为★25,
最后在英语列判断62是不是89、★25、62中的最小值,结果是true,显示为★62,因为此时的数学是★25,已经成为了字符串
解决方案:
辅助列 C2 设置 C2 为min(B2[;!0])处理,然后公式形态修改为:if(B2 = C2, "★" + round($$$, 1), round($$$, 1))。
2.2 单元格下拉复选框默认值匹配显示值
问题描述:
填报报表中单元格绑定下拉复选框控件,单元格默认值为多个数值组成的字符串,预览时需要显示单个数值对应的显示值,如果没有进行任何操作显示如下图所示:
解决方案:
1)方法一:设置「模板web属性>填报预览>直接显示控件」,保存后进行填报预览,如下图所示:
2)方法二:如果想不显示控件,可以为单元格添加「形态>数据字典」,设置实际值为「产品ID」,显示值为「产品名称」,然后在 B2 输入公式:=split(A2,","),在B3输入公式=split(A3,","),B2 和 B3 设置为不扩展。因为 A2 和 A3 的值都是字符串格式,而下拉复选框控件的返回值是数组格式,需要使用 split 函数将字符串转换为字符串数组。如下图所示:
注:因为是填报报表,填报到数据库中的是实际值而不是显示值。当使用上述方法一和方法二进行填报时,为防止同一单元格的数据被填报到多行,设置填报属性的时候需要使用joinarray函数将B3转化为为字符串格式,或者将下拉复选框的返回值类型改为字符串。
2.3 单元格下拉树实际值和显示值转化失效
问题描述:
单元格下拉树设置了默认值,同时设置了形态-数据字典,但默认值并没有按照设置正常转化为显示值,在预览时仍然显示为了实际值。
原因分析:
当使用上述格式为下拉树设置默认值时,该默认值是一个字符串。这时候形态在转化实际值为显示值时,会将该字符串视为一个整体去匹配数据,所以就无法匹配到相应的显示值了。
解决方案:
1)使用数组格式的数据作为下拉树默认值,就可以让形态正常匹配了,例如=[[1,11,111],[1,11,112]]。
2)单元格形态设置如下:
3)保存模板,点击填报预览即可。
2.4 单元格下拉树设置了显示值失焦后显示为实际值
问题描述:
单元格里添加的 下拉树控件 ,数据字典设置了实际值和显示值,选择时显示的是显示值,在失焦后单元格中显示的会是实际值。
解决方案:
可参考 单元格下拉树返回显示值 。
2.5 下拉框联动时切换控件选择后会显示实际值
问题描述:
如果数据字典是经过单元格联动后的数据集,在切换控件选择后会显示实际值,而非显示值。
解决方案:
可参考 单元格控件填报后保留显示值 。
2.6 下拉框内的值显示异常
问题描述:
使用 REPLACE 函数传递默认值给控件时:
下拉框前 500 项的默认值正常显示
下拉框 500 项之后的显示值异常,出现实际值
例如,使用 REPLACE 函数将 1 转化为壹元整,下拉框 500 项之后显示值异常,如下图所示:
原因分析:
使用 REPLACE() 函数传参时,下拉框初次取数只能取 500 个,所以默认值若是 500 项后的数据(如 997 , 998 , 999 )则无法被系统正确识别,就会显示实际值。当拉开下拉框至 500 项后的数据时,500 项后的数据才会被填充,再手动选择就可以正确显示。
解决方案:
使用 SPLIT() 函数代替 REPLACE() 函数传参,可以避免初次取数限制。