無代碼實現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步中修改公式即可~

 

【感想】這個方法實在比較繞,之所以繞這個大彎,也實在是諸多限制條件下的無奈之舉,當然也有可能是我給想繞了@@,如果哪位有好的方法請指教哈~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章