无代码实现infopath2007表单合并中数字加和

 

本文介绍了Infopath2007中的“合并表单”功能,以及一个无代码实现infopath2007表单合并中数字加和的小方法。

 

 

 

Infopath 2007中的“表单选项”—>“高级”标签中有“合并表单”选项,如果在设计表单模板时开启这个选项,那么用户即可在表单库中直接对多个表单进行合并。

 

 

 

所谓“表单合并”,指的是将基于相同表单模板的多个不同表单中的数据进行汇总。在实际应用中,如果需要对表单数据进行统计分析,这个功能还是非常有用的。

 

默认情况下,在将多个表单合并成一个表单时,合并的数据只是重复表或重复节中包含的数据或与列表控件或格式文本框控件关联的数据。

 

当然我们还可以在设计表单模板时对合并的方式进行设置。

 

在文本框上点击右键,选择“文本框属性”—>“高级”à“合并设置”:

 

 
如果不希望表单合并该控件中的内容,可选择“保留目标表单(默认)中的值”;选择“组合目标表单和源表单中的值”即可设置表单合并时该字段合并的方式。

 

虽然这样的合并方式在处理字符串时已经非常方便,但在实际操作中,我们很容易发现Infopath提供给我们的合并功能的局限性,对于数据汇总而言,仅仅是合并字符串当然是不够的,无法对数字进行分析,这个功能就有些鸡肋了

 
当然,Infopath2007也允许我们“自定义代码合并”,但当表单模板启用了浏览器功能,则会出现下面的提示:
   
    笔者在昨天就遇到了类似的情况,在开启了浏览器功能的表单模板中,合并表单时需要对数字进行加和,但是一进到“合并设置”就得到这样的提示:
经过尝试,我用了一个非常迂回的方法解决了数字加和的问题...简单的说,我就是用重复表的合并来替代数字的合并,下面是详细步骤。
【问题简述】在浏览器表单模板中填写一个整数字段test1,合并时需要计算test1的和并显示出来。
【准备】在数据源中创建以下字段
其中只有flag为文本(string类型),其它均为整数(integer)test2为重复字段。
【过程】
1. test1字段添加规则:
   test1字段发生改变时,将test1字段的值赋给test2
2.设置test2的合并方式:
因为test2被设置为重复字段,所以它的合并方式与文本字段不同,如下图所示:
    这样在表单合并时,重复表中的行将合并在一个表中。也就是说,我们将多个表单中的test1值存在了同一个重复表中了~

3.设置test_Num的默认值:

 

  test_Num等于test2的加和:

 

 

4.设置flag的默认值及合并方式:

 

随便给flag一个非空的默认值,然后在合并方式中选择“组合目标表单和源表单中的值”并选择一个任意的非空分隔符即可。

 

这样做的目的是为了区分出什么时候是用户填写的表单,什么时候是合并出来的表单,方便我们适时的显示出需要显示的内容。

 
5. 设置test1 的显示规则:

6.设置test_Num的显示规则:

 

 

7.设置数据连接,放按钮提交数据,测试
8.ok

 

【总结】将合并数字转换成合并重复表,将多个表单中的数字加和转换成同一表单中的节点集加和。这个方法不仅可以用于求和,凡是infopath里面支持的对数字的操作都可以完成,只要在第3步中修改公式即可~

 

【感想】这个方法实在比较绕,之所以绕这个大弯,也实在是诸多限制条件下的无奈之举,当然也有可能是我给想绕了@@,如果哪位有好的方法请指教哈~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章