在InfoPath的重复表中使用公式去筛选最小值数据
需求:
当你创建一个重复表,里面包括了一个数字栏,你又想去找到并且高亮显示最小值这些行,怎么呢?
解决方案:
可以使用公式和条件格式,去找到这些最小值。
步骤:
示例:
- 在InfoPath 2007, 创建一个新的空的模板.
- 添加一个重复表,并且这个表包括一个隐藏的栏,(示例为:field2,可以创建3列的重复表,然后删除中间一栏来完成)。
- 把表的第一个栏转换成具有日期选取器的控件。
- 在数据源面板中,右击myFields节点添加一个节点叫minDate 并且设置这个节点是日期类型,如下图所示
Figure 1. Repeating table with date and hidden fields and the Main data source in InfoPath Design mode. - 在数据源面板中,双击这个在重复表中你隐藏的那个字段,打开它的属性对话框,在这个示例中这个字段为Field2
- 在域或组属性对话框中,单击公式按钮,Fx。
- 在插入公式对话框,勾选编辑XPath(高级)选择框。.
-
在插入公式对话框中,复制、粘贴下面的公式到公式文本框中:
substring(../my:field1, 9, 2) + ((153 * (substring(../my:field1, 6, 2) + 12 * ((14 - substring(../my:field1, 6, 2)) div 12) - 3) + 2) div 5) + 365 * (substring(../my:field1, 1, 4) + 4800 - ((14 - substring(../my:field1, 6, 2)) div 12)) + ((substring(../my:field1, 1, 4) + 4800 - ((14 - substring(../my:field1, 6, 2)) div 12)) div 4) - 32083
这里 在第一栏的field1 (是一个日期选择器控件),就是你想找到最小值。
- 单击 OK 关闭所有的对话框。
- 在数据源面板中, 双击 minDate 字段打开它的属性对话框.
- 在 域或组属性 对话框中,单击值文本框后的公式按钮FX
- 在插入公式对话框中,选择编辑Xpath(高级) 选择框。
-
在插入公式对话框,复制粘贴如下的公式到公式文本框中:
../my:group1/my:group2/my:field1[../my:field2 = xdMath:Min(/my:myFields/my:group1/my:group2/my:field2)]
- 单击OK 关闭所有找开的窗口
- 双击 重复表第一栏的日期选取器控件,打开属性窗口
- 在日期选取器属性, 选择显示选项卡, 然后单击条件格式.
- 在条件格式对话框中,单击添加.
-
在条件格式 对话框, 添加2个条件:
field1 等于 minDate
与
minDate 不为空
- 在条件格式对话框, 选择一个颜色用于底纹,然后单击 OK.
- 单击 OK 关闭所有打开对话框。
Figure 2. Selecting the minimum date in a column of a repeating table in InfoPath.
大功告成!当你添加重复表中的新行,最小的值就会被特别显示出来。
本解决方案对于浏览器兼容的表单同样适用 InfoPath 2007 browser forms.