您的位置:首页 > 运维架构

[译]在InfoPath的重复表中使用公式去筛选最小值数据

2009-11-27 16:42 316 查看

在InfoPath的重复表中使用公式去筛选最小值数据

by S.Y.M. Wong-A-Ton

学习如何在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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: