在 InfoPath 2010 中新增公式與函式

套用到
InfoPath 2010

公式能讓你從自己創建的規則中獲得比基本預設規則更多的價值。 例如,公式用於計算當前或未來日期,甚至串接文字等事項。

本文內容

概觀

日期及時間函數

場函數

數學函數

文字函數

URL 函式

使用者名稱函式

概觀

公式是一種 XPath (XML 路徑語言的) 表達式,包含用於計算和顯示其他值的值、欄位或群組、函式及運算子。 你可以用公式為欄位建立新值,並在綁定到該欄位的控制項中顯示該值。 公式可使用如下:

根據你在設計範本時指定的數值,或使用者填寫表單範本時輸入的數值,計算一個數學值。

根據公式計算的數值執行規則。

顯示由其他控制項計算出的唯讀文字,或顯示其他控制項的值。

函數是一種根據計算結果回傳數值的表達式。 函式中使用的值稱為參數。 你可以使用InfoPath中包含的標準XPath 1.0函式,以及一些InfoPath專屬的功能。 功能由以下三個部分組成:

  • 名稱 函式名稱通常會提示該函數將執行的動作。
  • 回傳價值 函數的結果。
  • 論點 函數用於計算的數值。

函式可能需要參數來回傳一個值。 如果函式需要參數,你需要知道需要多少參數以及每個參數的資料型態。 如果你提供錯誤的必要參數數量或類型,函式將無法運作。

以下圖示展示了函數、表達式與公式之間的關係。

046C2CB3-2A43-40C6-af65-5f7ee9C0E1A4

新增計算值控制

你可以用計算值控制來顯示唯讀文字,顯示表單上另一個控制項的值,並建立基於 XPath 表達式的公式。 例如,如果您正在開發費用追蹤表單範本,可以新增計算價值控制,以顯示已輸入的費用總額。

注意

計算值控制只顯示資料,不會儲存資料,因此只有在不想儲存其值或在其他公式中引用時,才應該使用計算值控制。

  1. 在表單範本上,將游標放在您要插入控制項的地方。

  2. Home 標籤的 控制 群組中,點選 計算值 控制項。

  3. 「插入計算值 」對話框中,請執行以下其中一項:

    • 若要直接在計算值控制項中輸入文字或 XPath 表達式,請在 XPath 欄位輸入。

    • 要插入公式,請點擊 編輯公式6aeee2be-ff9c-4a64-a987-2db942c81046 ,然後在 公式 文字框中輸入所需公式,並依需求使用以下資料:

      • 若要將欄位或群組插入公式,請點選 「插入欄位或群組」,在 「選擇欄位或群組 」對話框中點選欄位或群組,然後點擊 確定
      • 若要將函式插入函式,請點選 「插入函式」,在 「插入函式 」對話框中選擇該函式,然後點擊 確定
        如果函式需要參數,請在 「插入函式 」對話框中選擇該函式,點擊 確定,然後在 公式 文字中雙擊指定位置,選取所需參數後再點 選確定
      • 要在公式中插入值或數學運算子,請在 公式 框中輸入數學運算的值或符號。
        數學運算子包括加 (+) 、減去 (-) 、乘以 (*) ,以及除以 (/) 。
        數學公式通常依賴整數或十進位作為參數。 為了避免公式中出現空白值,請在 檔案 標籤中點選 表單選項 ,然後選擇 進階 ,並確保將 空白值視為 選取零。

將公式加入控制項

雖然你可以使用計算值控制來顯示公式結果,但你不限於使用計算值控制。 你也可以使用公式設定其他控制項的預設值,例如文字框。 你可以用兩種方式設定控制項的預設值。 你可以使用靜態預設值,只要在欄位或群組屬性對話框的欄位輸入想要的值,或者用公式根據表單中的其他值設定欄位的預設值。 請依公式設定欄位的預設值:

  1. 選擇你想加入公式的控制項,然後在 控制工具屬性標籤中屬性群組中 點選 預設值

  2. 點擊價值框旁插入公式6aeee2be-ff9c-4a64-a987-2db942c81046

  3. 公式 文字框中輸入所需公式,並依需求使用以下資料:

    • 若要將欄位或群組插入公式,請點選 「插入欄位或群組」,在 「選擇欄位或群組 」對話框中點選欄位或群組,然後點擊 確定

    • 若要將函式插入函式,請點選 「插入函式」,在 「插入函式 」對話框中選擇該函式,然後點擊 確定
      如果函式需要參數,請在 「插入函式 」對話框中選擇該函式,點擊 確定,然後在 公式 文字中雙擊指定位置,選取所需參數後再點 選確定

    • 若要在公式中插入值或數學運算子,請在 公式 框中輸入數學運算的值或符號。
      數學運算子包括加 (+) 、減去 (-) 、乘以 (*) ,以及除以 (/) 。

      秘訣

      數學公式通常依賴整數或十進位作為參數。 為了避免公式中出現空白值,請在 檔案 標籤中點選 表單選項,然後選擇 進階。 請確保將 空白值視為選取零

  4. 若要將公式編輯為 XPath 公式,請選擇「 編輯 XPath (進階) 」勾選框,該公式會切換為 XPath 表達式的公式版本。

  5. 要檢查公式是否正確語法,請點擊 「驗證公式 」按鈕。 如果你的公式有錯誤:

Microsoft InfoPath 對話框中點選「顯示詳情」以查看公式中的錯誤。 以下是一些解決這些錯誤的建議:

  • 如果你在公式中使用函數,請確認你使用的參數是正確的。 有些函式需要欄位或群組,而有些函式則需要指定值作為參數。
  • 如有需要,刪除並重新輸入公式,確保輸入正確。
  • 按一下 [確定]
  • 如果你想在欄位所依據值變動時更新預設值,請選擇「 公式重新計算時刷新值 」的勾選框。 如果你這麼做了,然後點 選確定,然後在 控制工具屬性標籤裡屬性群組裡 點選 控制屬性。 點選 「顯示 」標籤,然後選擇 「唯讀 」勾選框。

在規則中使用公式

驗證、格式化動作規則中指定條件時,可以使用公式來控制該條件。 你可以在將規則指派給控制項或表單範本時,選擇條件對話框第三個下拉選單中的「使用公式」來達成此操作。

頁面頂端

日期及時間函數

新增日

為日期或日期時間加上天數。

語法

加 (天,) 天

引數 描述
date 第二個論點中的天數會加到該論證的日期上。 此參數可以是日期 (日期) 或日期與時間 (日期時間) 資料型別。
你想在第一個論點中加到日期的天數。 此參數必須是整數 (整數) 資料型別。 如果在這個論點中使用負數,回傳值則是較早的日期。

範例

你希望表單範本中的一個欄位包含從今天日期起算 60 天的日期。 你的表單範本包含一個名為 fldToday 的欄位,預設日期為今日日期。 要使用此函數計算新日期,請在新日期欄位中使用以下公式:

新增天 (fldToday,60)

addSeconds

在時間或日期時間上加幾秒。

語法

addSeconds (時間,秒)

引數 描述
time 日期與時間值,或是表單範本中其他欄位的參考,或日期或時間函數的結果,例如現在 () 或今日 () 。 第二個參數中的秒數會加到該參數的時間上。 此參數可以是日期 (日期) 或日期與時間 (日期時間) 資料型別。 如果是 Time 資料型別,則會回傳一個 Time 資料型別。 若是日期資料型別,則會回傳日期與時間資料型別。
你想在第一個參數中加到日期和時間值或時間值上的秒數。 此參數中的欄位必須是整數 (整數) 資料型別。 如果在此論證中使用負數,回傳值要麼是較早的日期和時間,要麼是較早的時間。

範例

你的表單範本包含一個名為 fldCurrentTime 的欄位,預設時間為當前時間,還有第二個欄位使用 addSeconds 函式,顯示從目前時間起 120 秒的時間。 要使用此函數計算新時間值,請在第二個欄位輸入以下公式:

addSeconds (fldCurrentTime,120)

現在

回傳系統目前的日期與時間。

如果你只想要回傳當前日期,請使用「今天」函式。

語法

現在 ()

此函式不使用參數。

範例

要查詢基於您表單範本的表單建立日期和時間,請在欄位中使用以下公式:

現在 ()

今天

回傳當前系統日期。 對於 SharePoint 清單日期欄位,請使用 Now () 功能。

如果你想要同時回傳日期和時間,請使用「現在」功能。

語法

今天 ()

此函式不使用參數。

範例

要查詢基於您表單範本的表單建立日期,請在欄位中使用以下公式:

今天 ()

頁面頂端

場函數

計數

計算欄位或群組的實例數量。

語法

田 (數)

引數 描述
欄位 在形式中計算的重複場或重複群的名稱。

範例

你正在設計一個表單範本,供供應商用來報告他們的產品和庫存。 表單範本包含一個重複群組,名為 grpProduct,用於供應商提交的產品。 每個群組包含產品及其庫存等級的資訊。 當供應商在基於此表單範本的表單中新增產品時,InfoPath 會建立重複群組的新實例。

你的表單範本在資料來源中有一個欄位,包含供應商提交的產品數量。 若要自動計算供應商提交的產品數量,即重複群組 grpProduct 的實例數,請在產品數量欄位中使用以下公式:

計數 (grp產品)

最後

回傳重複場或群組的最後一次出現。

注意

如果你設計的是相容瀏覽器的表單範本,這個函式不會出現在「插入函式」對話框的函數清單中。

語法

field_name[最後 () ]

雖然函式本身沒有任何必要的參數,但你可以將此函式作為指定欄位名稱的謂詞。

範例

你正在設計一個供應商填寫的表格範本,用來報告他們的產品庫存。 表單範本有資料連接至一個網路服務,該服務有方法檢查供應商所有產品資訊是否已填寫。 該方法需要供應商提交產品清單中的最後一個產品。

產品資訊儲存在一個名為 grpProduct 的重複群組的不同欄位中。 當供應商將產品加入表單時,InfoPath 會新增一個重複群組,稱為 grpProduct。 若供應商報告多個產品,表單的資料來源將包含多個 grpProduct 重複群組的實例。

為了確保你向網路服務提交正確的資訊,你會新增一個欄位,裡面會包含供應商產品組中最後一個產品的資訊。 要設定該欄位自動取得最後一個產品,請使用以下公式作為最後一個產品欄位的預設值:

grpProduct[上次 () ]

本地名稱

回傳欄位或群組的本地名稱。

注意

  • 若參數為重複域或重複群,函數回傳第一個重複域或重複群的值。
  • 當使用者填寫網頁瀏覽器表單時,使用此函式的公式會將表單資料傳送給伺服器,以取得該函式的回傳值。

語法

本地名稱 (場)

引數 描述
欄位 你想回傳的本地名稱屬性欄位名稱。

範例

你正在設計一份用於許可申請的表單範本。 表單範本與網路服務中的某個方法有資料連結。 此方法需要欄位的本地名稱屬性值,作為承包商的執照號碼。 執照號碼欄位的名稱是 fldLicenseNumber。

你有一個欄位會包含本地名稱屬性的值。 要自動取得執照號碼欄位的本地名稱屬性值,請使用以下公式作為包含本地名稱屬性值的欄位預設值:

本地名稱 (fld執照號碼)

名稱

回傳欄位或群組的名稱與命名空間前綴。

注意

  • 若參數為重複域或重複群,函式會回傳第一個重複域或重複群的名稱與前綴。
  • 當使用者根據瀏覽器啟用的表單範本填寫表單時,使用此函式的公式會將表單資料傳送給伺服器,以取得該函式的回傳值。

語法

(場名稱)

引數 描述
欄位 你想回傳的欄位名稱,其命名空間的前綴和名稱。

範例

你正在設計一份用於許可申請的表單範本。 表單範本與網路服務中的某個方法有資料連結。 此方法要求承包商執照號碼欄位的名稱屬性。 執照號碼欄位的名稱是 fldLicenseNumber。

你有一個欄位會包含 name 屬性的值。 要自動取得 name 屬性的值,請使用以下公式作為欄位的預設值:

名稱 (fld執照號碼)

Namespace-uri

回傳欄位或群組的完整命名空間。

注意

  • 若參數為一組欄位或群,函數會回傳第一個欄位或群的命名空間,形式為 。
  • 當使用者填寫網頁瀏覽器表單時,使用此函式的公式會將表單資料傳送給伺服器,以取得該函式的回傳值。

語法

Namespace-uri (欄位)

引數 描述
欄位 你想要取得的 URI 命名空間欄位名稱。

範例

你正在設計一份用於許可申請的表單範本。 表單範本會將資料提交給網路服務。 要處理基於表單範本的表單資料,網路服務需要來自資料來源中特定元素欄位的命名空間 URI。 你表單範本中包含命名空間 URI 資料的欄位名為 fldComplete。

你有一個欄位會包含該元素欄位的命名空間 URI。 要自動取得命名空間 URI,請使用以下公式作為包含該命名空間 URI 欄位的預設值:

namespace-uri (fldComplete)

排名

回傳欄位或群組相對於同一父群組中其他欄位或群組的索引 (或位置) 。

注意

此功能在網頁瀏覽器表單範本中無法使用。

語法

職位 ()

範例

你正在設計一個供應商填寫的表格範本,用來報告他們的產品庫存。 產品資訊儲存在重複群組的欄位中。 重複分組綁定於重複表,讓供應商能新增或修訂現有產品資訊。

在重複表的第一欄,你想在文字框中顯示列號。 當供應商新增產品到重複表時,若要自動顯示列號,請使用以下公式作為文字框的預設值:

職位 ()

頁面頂端

數學函數

包含數學函數的公式通常需要整數或十進位的參數。 為了確保參數是整數或小數值而非空值,請點選「 檔案>表單選項>進階」,然後確保「 將空白值視為零 」的勾選框已被勾選。

平均值

計算位於重複群中的域數值的平均值。

注意

重複欄位必須是數值資料型態,並且包含在群組中。

語法

平均 (場)

引數 描述
欄位 你想計算平均值的群組中重複欄位的名稱。

範例

你正在設計一個表單範本,供供應商用來報告他們的產品和庫存。 表單範本包含一個重複欄位,名為 fldPrice,該欄位位於一個重複群組中,包含供應商銷售的每項產品的資料。 該群組綁定於重複表控制。

你在表單範本中有一個欄位,會包含該供應商所銷售所有產品的平均價格。 要計算平均價格,請在欄位中使用以下公式表示平均價格:

平均 (fldPrice)

布林值

若存在域或群,則返回為真。 否則,則返回 false。

即使與該欄位相關的控制項已被刪除,但該欄位仍然存在,這個值仍會回傳為真。

語法

布林 (場)

引數 描述
欄位 一個重複場或重複群,將由此函數檢查。

範例

你正在設計一個供供應商用來報告產品庫存的表單範本。 產品資訊儲存在一個名為 grpProduct 的重複群組中的不同欄位。 每個重複群組包含包含每個產品的資訊欄位。 若供應商提供七項產品的資訊,表格將包含七個重複群組。

重複群組綁定於重複表控制,使供應商能新增或修訂現有產品資訊。 供應商可以新增或刪除重複表中的資料列。

如果使用者移除重複表中的所有列,你要顯示對話框。 如果重複表控制項至少有一列,則在資料來源中新增一個包含「true」字的欄位;如果重複表控制項沒有列,則加入「false」這個字。

你可以在重複表控制項中設定規則,當欄位中的值為假時,會顯示對話框。 要自動判斷重複表是否至少包含一列,請使用以下公式,因為欄位預設值包含「true」或「false」:

布林 (grpProduct)

天花板

將數字向上取整至最接近的整數。

語法

天花板 (號碼)

引數 描述
number 欄位名稱,帶有數值。

範例

你正在為你的公司設計一份報銷表範本。 這些費用會提交給一個只接受整數參數的網路服務。 提交給此參數的費用必須四捨五入至較高的整數值。 費用金額儲存在名為 fldExpenseAamount 的欄位中,整數值則儲存在另一個欄位。 要計算較高的整數值,請使用以下公式作為另一個欄位的預設值:

上限 (fldExpense 金額)

如果使用者根據你的表單範本建立表單,並在 fldExpenseAmount 欄位輸入 145.87,包含該公式欄位的值將是 146。

評估

回傳欄位或群組的值。 第二個參數定義了要計算該域或群的表達式。 通常,評估函數會嵌套在作用於域或群的函數中,例如和或平均值。

語法

評估 (場,表達式)

引數 描述
欄位 該欄位或群的名稱,其值將由第二個參數中的表達式來計算。
運算式 將應用於第一個論點的表達式。 這個表達式可以是 XPath 函數,也可以是用雙引號包圍的表達式 (「) 」。

範例

你正在為你的公司設計一份報銷表範本。 該表單範本包含一個名為 fldTotal 的欄位,裡面包含一個費用金額。 fldTotal 欄位屬於一個名為 grpExpenses 的重複分類群組。 另一個欄位綁定在包含所有費用總和的文字框上。 使用者輸入費用金額時,要顯示所有費用的總和,請在總費用欄位中使用以下公式:

評估 (GRP 支出,總額 (FLD 總) )

FALSE

回傳錯誤。

語法

虛假 ()

此函式不使用參數。

範例

你正在設計一份表格範本,該範本將供承包商用來申請建築許可。 表格範本分為兩個部分:一部分為聯絡資訊,另一部分為建築許可相關資訊。 填寫此表格時,承包商需先完整填寫聯絡資訊欄,才能填寫建築許可欄。

為了達成這個目標,你會建立一條規則,當聯絡資訊區塊中任何一個欄位是空白時,該布林欄位的值設為 false。 布林值欄位可以是布林真值或布林假值。 你也可以設定條件格式,如果布林欄位值為假,則隱藏包含建築許可資訊的區段控制。

若要隱藏包含建築許可資訊欄位的區段控制,請設定規則,若聯絡資訊區段中有任何欄位為空白,則在布林欄位中執行此函式。

樓層

將數字無條件捨位至最接近的整數

語法

(樓)

引數 描述
number 欄位名稱,帶有數值。

範例

你正在為你的公司設計一份報銷表範本。 這些費用會提交給一個只接受整數參數的網路服務。 提交給此參數的費用金額必須四捨五入至較低的整數值。 費用金額儲存在名為 fldExpenseAamount 的欄位中,整數值則儲存在另一個欄位。 要計算較低整數值,請使用以下公式作為另一個欄位的預設值:

樓層 (FLD 費用金額)

麥克斯

回傳欄位或群組中最大的數字。

語法

最大 (場)

引數 描述
欄位 群中的重複域,或重複群中的域,你想找到該群的最高值。

範例

你正在設計一個表單範本,供供應商用來報告產品庫存。 表單範本包含一個重複群組,包含多個包含供應商產品資料的欄位。 重複群中有一個名為 fldPrice 的欄位包含產品的價格。

表單範本資料來源中的另一個欄位會包含該供應商所有產品中最高的價格。 要返回最高價格,請在最高價格欄位使用以下公式:

最高 (FLDPrice)

Min

回傳欄位或群組中最小的數字。

語法

最小 (場)

引數 描述
欄位 群中的重複域,或重複群中的域,你想找到該群的最高值。

範例

你正在設計一個表單範本,供供應商用來報告產品庫存。 表單範本包含一個重複群組,包含多個包含供應商產品資料的欄位。 重複群中有一個名為 fldPrice 的欄位包含產品的價格。

表單範本資料來源中的另一個欄位會包含該供應商所有產品中最低的價格。 要返回最低價格,請在最低價格欄位使用以下公式:

最低 (fldPrice)

若布林值為假或為空,則回傳真值。 若布林值為真或非零,則回傳假值。

語法

不是 (boolean_value)

引數 描述
boolean_value 一個具有布林資料型態的欄位。

範例

你正在設計一份表格範本,該範本將供承包商用來申請建築許可。 表格範本有一欄是聯絡資訊,另一欄是與建築許可相關的資訊。 填寫此表格時,承包商需先完整填寫聯絡資訊欄,才能填寫建築許可欄。

為了達成這個目標,你建立一條規則,當聯絡資訊區塊中有任何欄位留空時,布林欄位的值會被設為 false。 布林值欄位可以是布林值為真或為假。 如果布林欄位值為假,你再用相同的公式隱藏包含建築許可資訊的截面控制。 要設定此規則,請使用以下公式將布林欄位設為 false:

這不是 (真的 () )

number

將一個數值轉換成一個數字。

若參數中的值無法轉換為數字,則該函數回傳 NaN。

語法

數值 ()

論點描述

value欄位,該欄位有數值可轉換為數字。

範例

你正在設計一份表格範本,該範本將供承包商用來申請建築許可。 表格範本中包含一個區域,承包商可以輸入其營業地址。 為了驗證承包商輸入的地址是否有效,你需要使用網路服務的資料連線來驗證地址。 若地址經過驗證,承包商即可將表格提交至SQL資料庫。 SQL 資料庫使用文字欄位來表示地址號碼和街道名稱。 網路服務要求地址號碼為數字資料型態,街道名稱為文字資料型態。

若要同時向網路服務與 SQL 資料庫提交資料,位址需以兩種不同的資料型態儲存:

  • 要將地址提交給網路服務,地址號碼必須是數字資料型態,街道名稱必須是文字資料型態。
  • 要將地址提交到 SQL 資料庫,地址號碼與街道名稱都必須是文字資料型別。

你也希望承包商只輸入一次地址。 為了將地址轉換為正確的資料型別,並確保承包商只輸入一次地址,表單範本中包含一個名為 fldAddressNumber 的欄位用於輸入地址號碼,以及另一個欄位用於輸入街道名稱。 這兩個欄位皆設定為文字資料型態。

若要將地址號碼提交給網路服務,您需要將 fldAddressNumber 欄位中儲存為文字資料型別 () 轉換為數字資料型別。 將位址號碼轉換為數字資料型別的值會儲存在另一個欄位,該欄位已設定為儲存數值資料型別。

要將位址號碼從文字資料型態轉換為數值資料型別,請使用以下公式作為 fldAddressNumber 欄位的預設值:

(地址號碼)

nz

回傳一個欄位或群組,所有空白欄位被 0 (0) 替換。

語法

紐西蘭 (田野)

引數 描述
欄位 你想檢查的欄位值。

範例

你正在設計一個供應商填寫的表格範本,用來報告他們的產品庫存。 供應商會根據你的表單範本,透過表單將產品庫存提交到網路服務。 網路服務的方法要求所有包含數值資料的元素都必須有數值。 網路服務會拒絕包含空數值元素的表單。

你的表單範本中有一個名為 fldAvailability 的欄位,裡面有對應供應商提供該產品的能力的數字。 供應商可在此欄位輸入編號。 為了確保供應商能根據您的表單範本提交表單至網路服務,且若供應商未輸入數字,該欄位的值可自動設為零,請使用以下公式作為該欄位的預設值:

紐西蘭 (fld 可用性)

將數字四捨五入到最近的整數。

若非整數值正好介於兩個四捨五入整數值的中間,則回傳值為下一個較大的整數值。

語法

(回合)

引數 描述
number 包含將用此公式四捨五入的數字欄位。

範例

你正在設計一個表單範本,供供應商用來報告產品庫存。 表單範本包含一個重複群組,包含多個欄位,包含供應商產品資料。 重複群中其中一個稱為 fldPrice 的欄位包含產品的價格。

表單範本有提交資料連接網路服務。 網路服務方法要求每個價格都四捨五入為整數值。 要將適當的值傳送給 Web 服務方法,你需要在資料來源中加入重複欄位。 此欄位使用以下公式將 fldPrice 欄位中的價格四捨五入為整數值:

(fld價格)

總和

回傳域或群中所有欄位的和。 每個欄位首先會轉換成一個數字值。

語法

場 (和)

引數 描述
欄位 重複群中的域名稱,或群中重複域的名稱,其值將被加。 要從兩個不同群組加欄位,請使用聯集運算子 (|) 分開爭論。 例如: ( 域名稱 1 | 的和田名 2) 。

範例

你正在設計一個報銷表範本。 表單範本有一個包含費用項目的群組。 每個項目的金額會儲存在一個名為 fldExpenseAamount 的欄位中。 該群組綁定在一個重複的表格上,該表將每個費用項目以一列形式顯示。 表單範本包含一個文字框控制,顯示總費用。 為了顯示總費用,文字框控制項包含以下公式:

總和 (fld費用金額)

true

回傳真值。

語法

真 ()

此函式不使用參數。

範例

你正在設計一份表格範本,該範本將供承包商用來申請建築許可。 表格範本包含一部分為聯絡資訊,另一部分為與建築許可相關的資訊。 填寫此表格時,承包商需先完整填寫聯絡資訊欄,才能填寫建築許可欄。

為了達成這個目標,你建立一條規則,將一個布林欄位的值設為真,前提是聯絡資訊區塊中的所有欄位都包含資料。 布林值欄位可以是布林值真或假。 若布林欄位值為真,則顯示包含建築許可資訊的區段控制項。

若要顯示包含建築許可資訊的區段控制,你可以設定規則在布林欄位執行此函式,且聯絡資訊區塊中的所有欄位都包含資料。

頁面頂端

文字函數

康卡特

將兩個或多個文字字串欄位合併成一個文字字串。

語法

Concat (text1, text2, ...)

引數 描述
正文1 一個包含將文字合併成一行文字的欄位,該文字屬於參數2。
text2, ... 或更多額外欄位,包含與前一個欄位合併的文字。 用逗號分開文字欄位。

範例

你正在設計一個表單範本,裡面有一個名為 fldFirstName 的欄位和一個名為 fldLastName。 在第三個欄位加入以下公式,使其包含「此表單以名字><姓氏>填寫<」的文字:

concat (「此表格由「, fldFirstName, 」 「」 「, fldLastName, 」填寫。」)

注意

任何實際輸入的文字,包括空格或標點符號,都必須以引號 (“) ”作為引用。

包含

如果第一個欄位或文字串包含第二個欄位,則回傳為真。 否則,則返回 false。

語法

包含 (within_text、find_text)

引數 描述
within_text 包含待搜尋文本的欄位。
find_text 包含文字或被雙引號包圍的文字欄位 (“ ”) 在第一個參數中搜尋。

範例

你正在設計一個包含三個文字欄位的表單範本。 第一個版本允許使用者在第一個文字控制項(稱為 fldText)中輸入大量文字。 第二個版本允許使用者輸入一段短文字,名為 fldFindText。 第三個文字框會比較第二個文字框與第一個,並指示第二個欄位的值是否在第一個欄位中,並顯示結果。 預設值會是以下公式:

包含 (fldText,fldFindText)

正規化空間

移除文字字串中的空白。

注意

這樣可以移除欄位中帶有文字資料型態的前置、後置及重複空白。

語法

正規化空間 (文字)

引數 描述
text 包含你想要移除的前置、後置或重複空白的文字。 用雙引號包圍文本 (「) 」。

範例

你設計一個表單範本,裡面有一個名為 fldText (的欄位,該欄位綁定到文字框控制) 。 若要將第一欄輸入的文字正規化,並顯示第一欄的值且不留餘白,請加入第二個欄位,預設值為以下公式:

normalize-space (fldText)

開頭

如果第一個欄位或文字字串以第二個開頭,則回傳為真。 否則,回傳為假。

語法

以 (文字開頭,start_text)

引數 描述
text 包含要搜尋文本的欄位名稱。 用逗號分開論點。
start_text 要搜尋的欄位開頭的文本,如第一個參數所指定的。 這個論證可以是用雙引號包圍的欄位或文字 ( 「) 。

範例

你正在設計一個包含三個文字欄位的表單範本。 第一個版本允許使用者在第一個文字控制項(稱為 fldText)中輸入大量文字。 第二個版本允許使用者輸入一段短文字,名為 fldFindText。 第三個文字框會比較第二個文字框與第一個,並指示第一個欄位的值是否以第二個欄位的值開始,並顯示結果。 預設值會是以下公式:

以 (fldText, fldFindText)

字串

將數值轉換成文字串。

語法

字串 (值)

引數 說明
包含要轉換成文字的值欄位。

範例

你正在設計一份表格範本,該範本將供承包商用來申請建築許可。 表格範本中包含承包商可輸入其營業地址的區塊。 為了驗證承包商輸入的地址是否有效,表單範本會連接到一個可以驗證地址的網路服務。 若地址經過驗證,承包商即可將表格提交至SQL資料庫。 SQL 資料庫使用文字欄位表示街道地址。 網路服務要求地址號碼為數字資料型態,街道名稱為文字資料型態。

要同時向網路服務和 SQL 資料庫提交資料,位址需要儲存在兩種不同的資料類型中:

  • 要將地址提交給網路服務,地址號碼必須是數值資料型別。
  • 要將地址提交到 SQL 資料庫,地址號碼與街道名稱都必須是文字資料型別。

你也希望承包商只輸入一次地址。 為了將地址轉換為正確的資料型別並確保承包商只輸入一次地址,表單中包含一個名為 fldAddressNumber 的地址輸入欄位,以及另一個輸入街道名稱的欄位。 fldAddressNumber 欄位是數值資料型態,街道名稱欄位是文字資料型態。

若要將完整的地址 (地址號與街道名稱) 提交到 SQL 資料庫,您需要將 fldAddressNumber 欄位與街道名稱欄位的值合併為一個文字資料型態的值。 你首先需要將 fldAddressNumber 欄位中的數字資料(該欄位以數字資料型態儲存)轉換成文字資料型態。 你在資料來源中新增一個欄位,該欄位會包含完整的地址作為文字資料型別。

要將 fldAddressNumber 欄位中的文字資料轉換成文字資料型別,以便使用 Web 服務,請設定另一個欄位,將地址編號作為文字資料型態。 若要將位址號碼從數字資料型態轉換為文字資料型態,請使用以下公式作為此欄位的預設值:

字串 (fldAddressNumber)

弦長

回傳文字字串中的字元數。

語法

字串長度的文字 ()

引數 描述
text 你想要計算的文字欄位。

範例

你正在設計一個表單範本,裡面有一個名為 fldText 的欄位,該欄位綁定在文字框控制項上。 你的表單範本包含第二個欄位,用來計算第一個表單輸入的字元數。 為此,第二個欄位預設值會包含以下公式:

字串長度 (fldText)

子字串

回傳文字串的特定部分。 第二個參數指定起始位置,第三個參數則指定包含多少字元。

語法

文字 (子串、start_position、char_count)

引數 描述
text 一個帶有文字資料類型或以雙引號包圍的欄位 (“ ”) 。 函式會搜尋此文字,並回傳第二個參數指定位置的所有字元,直到第三個參數或文字結尾,以先發生者為準。
start_position 從第一個參數中擷取的文字起始位置。 此參數必須是整數,或是對設定為儲存整數、整數資料型別 (欄位的參考) 。
char_count 你想從第二個參數指定的起始位置開始,取得的字元數。 此參數必須是整數,或是對設定為儲存整數、整數資料型別 (欄位的參考) 。

範例

你正在設計一個包含以下欄位和控制項的表單範本:

  • 一個名為 fldText 的欄位,綁定到文字框控制項。 此欄位包含函式所搜尋的文字。
  • 一個名為 fldStartingPosition 的欄位,綁定到文字框控制項。 此欄位被設定為整數資料型態。 欄位包含函數的起始位置。
  • 一個名為 fldNumberOfCharacters 的欄位,綁定到文字框控制項。 此欄位被設定為整數資料型態。 欄位包含函式回傳的字元數。
  • 一個顯示函數結果的文字框控制項。 文字框控制項包含以下公式:

子字串 (fldText、fldStartingPosition、fldNumberOfCharacters)

如果使用者輸入「此表單是從 InfoPath 表單範本建立的」。 在第一個文字框,接著第二個是 4,第三個是 16,然後第四個文字框會顯示「s form was creat」。

子串後

回傳緊接第二個文字串出現後的第一個文字串中的文字。

語法

(文字後的子字串,find_text)

引數 描述
text 一個帶有文字資料類型或以雙引號包圍的欄位 (“ ”) 。 函式會搜尋此參數中的文字,然後回傳第二個參數中緊接文字的所有字元。
find_text 在第一個論元的文本中搜尋的文本。 文字可以是欄位中帶有文字資料類型的值,也可以是用雙引號包圍的文字 (「) 」。 函式會搜尋該文字的第一個參數中的文字,然後回傳該參數後面所有字元。

範例

你正在設計一個包含以下欄位和控制項的表單範本:

  • 一個名為 fldText 的欄位,綁定到文字框控制項。 此欄位包含函式所搜尋的文字。
  • 一個名為 fldSubstringText 的欄位,綁定到文字框控制項。 此欄位包含函數的第二個參數文字。
  • 一個顯示函數結果的文字框控制項。 文字框控制項包含以下公式:

子字串在 (fldText, fldSubstringText)

如果使用者輸入「此表單是從 InfoPath 表單範本建立的」。 在 fldText 欄位,第二個欄位是「InfoPath」,第三個文字框控制項則包含「表單範本」。

子串前置

回傳第一個文字串中,該字串出現於第二個文字串之前的文字。

語法

(文字前的子字串,find_text)

引數 描述
text 一個帶有文字資料類型或以雙引號包圍的欄位 (“ ”) 。 函式會搜尋此參數中的文字,然後回傳第二個參數 find_text 前的所有字元。
find_text 在文本參數中搜尋的值。 這個值可以是帶有文字資料型別欄位的值,也可以是用雙引號包圍的文字 (“ ”) 。 該函式會搜尋第一個參數中的文字 (文字) ,然後回傳該參數中文字前的所有字元。

範例

你正在設計一個包含以下欄位和控制項的表單範本:

  • 一個名為 fldText 的欄位,綁定到文字框控制項。 此欄位包含函式所搜尋的文字。
  • 一個名為 fldSubstringText 的欄位,綁定到文字框控制項。 此欄位包含函數的第二個參數文字。
  • Aa 文字框控制,顯示函數的結果。 文字框控制項包含以下公式:

substring-before (fldText, fldSubstringText)

如果使用者輸入「此表單是從 InfoPath 表單範本建立的」。 在 fldText 欄位,第二個欄位寫「已建立」,第三個文字框控制項會包含「此表單曾」。

翻譯

回傳第一個文字串,第二個字串中的每個字元都替換為第三個字串對應位置的字元。

語法

翻譯 (文字、find_chars、replace_chars)

引數 描述
text 包含將被替換字元的文字欄位名稱。 用逗號分開論點。
find_chars 一個字元或欄位的值,該欄位的文字資料型別會被第三個參數中的字元取代。 用逗號分開論點。
replace_chars 一個字元或欄位的值,並帶有一個文字資料型態,該型態將替換第二個參數中該字元的每個實例。

範例

你正在設計一份表格範本,該範本將供承包商用來申請建築許可。 表格範本中包含承包商可輸入其營業地址的區塊。 該區塊包含一個名為 fldStreetAddress 的欄位,綁定到一個文字框控制項,承包商可在該框中輸入街道地址。

為了驗證承包商輸入的地址是否有效,你需要連接到一個網路服務來驗證地址。 網路服務需要在地址中使用小寫字元。

要將街道地址中的任意大寫字元轉換為小寫,需在資料來源中新增一個欄位,包含轉為小寫字元的街道地址。 此欄位的預設值包含以下公式:

translate (fldStreetAddress, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz)

頁面頂端

URL 函式

SharePointListUrl

回傳表單存放於 SharePoint 清單或表單庫的地址,該表單 (InfoPath 2010) 。

語法

SharePointListUrl ()

此函式不使用參數。

範例

你正在設計一個 SharePoint 清單的表單範本,並想新增一個連結到該清單所託管的位置,例如「http://sharepointserver/site/list/」。 為此,新增一個超連結控制項並將其設為 唯讀,然後設定該控制項所連結欄位的預設值如下:

SharePointListUrl ()

注意

如果表單範本不是託管在 SharePoint 伺服器上,那麼 SharePointListUrl () 函式只會回傳「http://sharepointserver/site/list/」。

SharePointServerRootUrl

回傳表單所託管的 SharePoint 伺服器地址 (InfoPath 2010) 。

語法

SharePointServerRootUrl ()

此函式不使用參數。

範例

你正在設計一個 SharePoint 清單的表單範本,並想新增一個連結到該清單所託管的 SharePoint 伺服器根目錄,例如「http://sharepointserver/site/list/」。 為此,新增一個超連結控制項並將其設為 唯讀,然後設定該控制項所連結欄位的預設值如下:

SharePointServerRootUrl ()

注意

如果表單範本不是託管在 SharePoint 伺服器上,那麼 SharePointListUrl () 函式只會回傳「http://sharepointserver/site/list/」。

SharePointCollectionUrl

回傳 SharePoint 網站集合的地址,該表單僅 (InfoPath 2010) 。

語法

SharePointCollectionUrl ()

此函式不使用參數。

範例

你正在設計一個 SharePoint 清單的表單範本,並想新增一個連結到該清單所託管的 SharePoint 伺服器網站集合,例如「http://sharepointserver/sitecollection/」。 為此,新增一個超連結控制項並將其設為 唯讀,然後設定該控制項所連結欄位的預設值如下:

SharePointCollectionUrl ()

注意

如果表單範本不是託管在 SharePoint 伺服器上,那麼 SharePointListUrl () 函式只會回傳「http://sharepointserver/sitecollection/」。

SharePointSiteUrl

回傳表單所託管的 SharePoint 網站地址 (InfoPath 2010) 。

語法

SharePointSiteUrl ()

此函式不使用參數。

範例

你正在設計一個 SharePoint 清單的表單範本,並想新增一個連結到該清單所託管的 SharePoint 網站,例如「http://sharepointserver/site/」。 為此,新增一個超連結控制項並將其設為 唯讀,然後設定該控制項所連結欄位的預設值如下:

SharePointSiteUrl ()

注意

如果表單範本不是託管在 SharePoint 伺服器上,那麼 SharePointListUrl () 函式只會回傳「http://sharepointserver/site/」。

頁面頂端

使用者名稱函式

使用者名稱

回傳填寫表單 (InfoPath 2007 及之後版本) Microsoft的使用者名稱。

注意

若使用者在網頁瀏覽器中填寫表單,使用者名稱會從 Microsoft Windows SharePoint Services 3.0 或更新版本中取得。

語法

使用者名稱 ()

此函式不使用參數。

範例

你正在為你的公司設計一份報銷表範本。 你的信用卡公司會將員工的支出紀錄以電子方式傳送到公司維護的資料庫。 要取得員工的費用紀錄,資料庫需要填寫該員工的使用者名稱,該員工是基於你的表單範本填寫的表單。

你可以在表單範本的資料來源中新增一個欄位,以儲存員工的使用者名稱。 你也會建立一個查詢資料連線,利用查詢中該欄位的值來取得費用。

為了確保填寫費用報表的員工使用正確的使用者名稱,你會將欄位綁定到文字框控制項。 要顯示根據此表單範本建立表單的使用者名稱,請使用以下公式作為綁定於文字框控制項的欄位預設值:

使用者名稱 ()

頁首