InfoPath 2010 で数式と関数を追加する

適用先
InfoPath 2010

数式を使用すると、事前に定義された基本的なルールを使用するよりも、作成したルールを最大限に活用できます。 たとえば、数式は、現在または将来の日付の計算やテキストの連結などのために使用されます。

この記事の内容

概要

日付と時刻の関数

フィールド関数

数値演算関数

文字列関数

URL 関数

userName 関数

概要

数式は XPath (XML パス言語) 式であり、値、フィールドまたはグループ、関数、および演算子で構成され、他の値の計算と表示に使用されます。 数式を使用すると、フィールドの新しい値を作成し、そのフィールドにバインドされているコントロールにその値を表示できます。 数式は次のように使用できます。

テンプレートの設計時に指定した値に基づいて、またはフォーム テンプレートに入力するときにユーザーが入力した値に基づいて、数学的な値を計算します。

数式を使用して計算される値に基づいてルールを実行します。

他のコントロールから計算された読み取り専用テキストを表示するか、別のコントロールの値を表示します。

関数は、計算結果に基づいて値を返す式です。 関数で使用される値は引数と呼ばれます。 InfoPath 固有の関数に加えて、InfoPath に含まれる標準の XPath 1.0 関数を使用できます。 関数は、次の 3 つの部分で構成されます。

  • 名前 通常、関数の名前は、関数が実行するアクションに関するヒントを提供します。
  • 戻り値 関数の結果。
  • 引数 関数が計算を実行するために使用する値。

関数は、値を返すために引数を必要とする場合があります。 関数に引数が必要な場合は、必要な引数の数と各引数のデータ型を把握する必要があります。 正しくない数または型の必要な引数を指定した場合、関数は機能しません。

次の図は、関数、式、および数式の関係を示しています。

046c2cb3-2a43-40c6-af65-5f7ee9c0e1a4

計算値コントロールを追加する

計算値コントロールを使用すると、読み取り専用テキストの表示、フォーム上の別のコントロールの値の表示、XPath 式に基づく数式の作成を行うことができます。 たとえば、経費追跡フォーム テンプレートを開発している場合は、計算値コントロールを追加して、入力された経費の合計を表示できます。

計算値コントロールはデータのみを表示し、格納しないため、その値を保存したり、別の数式で参照したりしない場合にのみ、計算値コントロールを使用する必要があります。

  1. フォーム テンプレートで、コントロールを挿入する場所にカーソルを置きます。

  2. [ ホーム ] タブの [ コントロール ] グループで、 計算された値 コントロールをクリックします。

  3. [ 計算値の挿入 ] ダイアログ ボックスで、次のいずれかの操作を行います。

    • 計算値コントロールにテキストまたは XPath 式を直接入力するには、[ XPath ] ボックスに「」と入力します。

    • 数式を挿入するには、[ 数式6aeee2be-ff9c-4a64-a987-2db942c81046 ] をクリックし、[ 数式 ] テキスト ボックスに目的の数式を入力し、必要に応じて次の数式を使用します。

      • 数式にフィールドまたはグループを挿入するには、[ フィールドまたはグループの挿入] をクリックし、[フィールドまたはグループの選択] ダイアログ ボックスで フィールドまたはグループを クリックし、[OK] をクリック します
      • 関数を数式に挿入するには、[関数の 挿入] をクリックし、[関数の 挿入 ] ダイアログ ボックスで関数を選択し、[OK] をクリック します
        関数にパラメーターが必要な場合は、[関数の 挿入 ] ダイアログ ボックスで関数を選択し、[ OK] をクリックし、[ 数式 ] テキストで示されている場所をダブルクリックし、目的のパラメーターを選択してから [OK] をクリックします。
      • 数式に値または数学演算子を挿入するには、[ 数式] ボックス に数学演算の値または記号を入力します。
        算術演算子には、加算 (+)、減算 (-)、乗算 (*)、除算 (/) が含まれます。
        数式は通常、引数として整数または 10 進値に依存します。 数式内の空白の値を回避するには、[ ファイル ] タブで [ フォーム オプション ] をクリックし、[ 詳細設定 ] を選択し、[ 空白の値を 0 として扱う ] が選択されていることを確認します。

コントロールに数式を追加する

計算値コントロールを使用して数式の結果を表示できますが、計算値コントロールの使用に限定されるわけではありません。 数式を使用して、テキスト ボックスなどの他のコントロールの既定値を設定することもできます。 コントロールの既定値を設定する方法は 2 つあります。 [フィールド] または [グループ プロパティ] ダイアログ ボックスの [値] フィールドに目的の値を入力するだけで、静的な既定値を使用するか、数式を使用してフォーム内の他の値に基づいてフィールドの既定値を設定できます。 数式に基づいてフィールドの既定値を設定するには、次の操作を行います。

  1. 数式を追加するコントロールを選択し、[ コントロール ツール] の [ プロパティ ] タブの [ プロパティ ] グループで、[ 既定値] をクリックします。

  2. [] ボックスの横にある [数式6aeee2be-ff9c-4a64-a987-2db942c81046 の挿入] をクリックします。

  3. 必要に応じて、次の数式を使用して、[数式] テキスト ボックスに目的の 数式 を入力します。

    • 数式にフィールドまたはグループを挿入するには、[ フィールドまたはグループの挿入] をクリックし、[フィールドまたはグループの選択] ダイアログ ボックスで フィールドまたはグループを クリックし、[OK] をクリック します

    • 関数を数式に挿入するには、[関数の 挿入] をクリックし、[関数の 挿入 ] ダイアログ ボックスで関数を選択し、[OK] をクリック します
      関数にパラメーターが必要な場合は、[関数の 挿入 ] ダイアログ ボックスで関数を選択し、[ OK] をクリックし、[ 数式 ] テキストで示されている場所をダブルクリックし、目的のパラメーターを選択してから [OK] をクリックします。

    • 数式に値または数学演算子を挿入するには、[ 数式 ] ボックスに数値または数式演算の記号を入力します。
      算術演算子には、加算 (+)、減算 (-)、乗算 (*)、除算 (/) が含まれます。

      ヒント

      数式は通常、引数として整数または 10 進値に依存します。 数式の空白の値を回避するには、[ ファイル ] タブで [ フォーム オプション] をクリックし、[ 詳細設定] を選択します。 [ 空白の値を 0 として扱う] が選択されていることを確認します。

  4. 数式を XPath 数式として編集するには、[XPath の編集 (詳細)] チェック ボックスを選択します。これにより、数式が数式の XPath 式バージョンに変更されます。

  5. 正しい構文の数式をチェックするには、[数式の確認] ボタンをクリックします。 数式にエラーが含まれている場合:

[Microsoft InfoPath] ダイアログ ボックスで [詳細の表示] をクリックして、数式のエラーを表示します。 これらのエラーを解決するための推奨事項を次に示します。

  • 数式で関数を使用している場合は、関数の正しい引数を使用していることを確認します。 一部の関数ではフィールドまたはグループが必要ですが、他の関数では引数として指定された値が必要です。
  • 必要に応じて、数式を削除して再入力して、正しく入力されていることを確認します。
  • [OK] をクリックします。
  • フィールドの値が変更されたときにフィールドの既定値を更新する場合は、[数式が再計算されたときに値を更新する] ボックスチェック選択します。 これを行う場合は、[ OK] をクリックし、[ コントロール ツール] の [ プロパティ ] タブの [ プロパティ ] グループで[ コントロール のプロパティ] をクリックします。 [表示] タブをクリックし、[読み取り専用チェック] ボックスを選択します。

ルールで数式を使用する

検証、書式設定、またはアクション ルールで条件指定するときに、数式を使用して条件を制御できます。 これを行うには、コントロールまたはフォーム テンプレートにルールを割り当てるときに、[条件] ダイアログ ボックスの 3 番目のドロップダウン リストから [数式を使用する] を選択します。

ページの先頭へ

日付と時刻の関数

Adddays

日付または日付と時刻に日数を追加します。

構文

addDays(date, days)

引数 説明
date 2 番目の引数の日数がこの引数の日付に追加されます。 この引数には、Date (date) または Date and Time (dateTime) データ型を指定できます。
のうち 最初の引数の日付に追加する日数。 このパラメーターは整数 (整数) データ型である必要があります。 この引数で負の数値を使用する場合、戻り値は以前の日付になります。

使用例

フォーム テンプレートのフィールドに、今日の日付から 60 日の日付を含める必要があります。 フォーム テンプレートには fldToday という名前のフィールドが含まれています。今日の日付は既定値です。 この関数を使用して新しい日付を計算するには、新しい日付フィールドで次の式を使用します。

addDays(fldToday, 60)

addSeconds

時刻または日付と時刻に秒を追加します。

構文

addSeconds(time, seconds)

引数 説明
time 日付と時刻の値、またはフォーム テンプレート上の別のフィールドへの参照、または now() や today() などの日付または時刻関数の結果である時刻値。 2 番目の引数の秒数は、この引数の時刻に追加されます。 この引数には、Date (date) または Date and Time (dateTime) データ型を指定できます。 Time データ型の場合は、Time データ型が返されます。 日付データ型の場合は、日付と時刻のデータ型が返されます。
seconds 最初の引数の日付と時刻の値または時刻値に追加する秒数。 このパラメーターのフィールドは整数 (整数) データ型である必要があります。 この引数で負の数値を使用する場合、戻り値は以前の日時またはそれより前の時刻です。

使用例

フォーム テンプレートには、現在の時刻を既定値として使用する fldCurrentTime という名前のフィールドと、数式の addSeconds 関数を使用して現在時刻から 120 秒を表示する 2 番目のフィールドが含まれています。 この関数を使用して新しい時刻値を計算するには、2 番目のフィールドに次の式を入力します。

addSeconds(fldCurrentTime, 120)

ません

現在のシステムの日付と時刻を返します。

現在の日付だけを返す場合は、today 関数を使用します。

構文

Now()

この関数では引数は使用されません。

使用例

フォーム テンプレートに基づくフォームが作成された日時を取得するには、フィールドで次の式を使用します。

Now()

今日

現在のシステム日付を返します。 SharePoint リストの日付フィールドには、now() 関数を使用します。

日付と時刻の両方を返す場合は、now 関数を使用します。

構文

today()

この関数では引数は使用されません。

使用例

フォーム テンプレートに基づくフォームが作成された日付を取得するには、フィールドで次の式を使用します。

today()

ページの先頭へ

フィールド関数

count

フィールドまたはグループのインスタンス数をカウントします。

構文

count(field)

引数 説明
フィールド フォームでカウントする繰り返しフィールドまたは繰り返しグループの名前。

使用例

あなたは、サプライヤーが製品と在庫を報告するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、仕入先から送信された製品の grpProduct という名前の繰り返しグループが含まれています。 各グループには、製品とその在庫レベルに関する情報が含まれています。 サプライヤーがこのフォーム テンプレートに基づくフォームに製品を追加すると、InfoPath によって繰り返しグループの新しいインスタンスが作成されます。

フォーム テンプレートのデータ ソースには、仕入先から送信された製品の数を含むフィールドがあります。 仕入先から送信された製品の数 (繰り返しグループ grpProduct のインスタンス数) を自動的にカウントするには、[製品の数] フィールドで次の式を使用します。

count(grpProduct)

繰り返しフィールドまたはグループの最後の出現箇所を返します。

ブラウザー互換のフォーム テンプレートを設計している場合、この関数は [関数の挿入] ダイアログ ボックスの [関数] ボックスの一覧には表示されません。

構文

field_name[last()]

関数自体には必要なパラメーターはありませんが、指定したフィールド名の述語としてこの関数を使用できます。

使用例

あなたは、サプライヤーが製品在庫を報告するために記入するフォームテンプレートを設計しています。 フォーム テンプレートには、Web サービスへのデータ接続があり、サプライヤーのすべての製品の製品情報が完了しているかどうかを確認するメソッドがあります。 メソッドには、サプライヤーによって送信された製品の一覧の最後の製品が必要です。

製品情報は、grpProduct という名前の繰り返しグループのさまざまなフィールドに格納されます。 サプライヤーがフォームに製品を追加すると、InfoPath は grpProduct という新しい繰り返しグループを追加します。 サプライヤーが複数の製品について報告する場合、フォームのデータ ソースには grpProduct 繰り返しグループの複数のインスタンスが含まれます。

Web サービスに正しい情報を送信することを確認するには、仕入先の製品グループの最後の製品に関する情報を含むフィールドを追加します。 最後の製品を自動的に取得するようにそのフィールドを構成するには、最後の製品フィールドの既定値として次の式を使用します。

grpProduct[last()]

local-name

フィールドまたはグループのローカル名を返します。

  • 引数が繰り返しフィールドまたは繰り返しグループの場合、関数は最初の繰り返しフィールドまたは繰り返しグループの値を返します。
  • ユーザーが Web ブラウザー フォームに入力すると、この関数を使用する数式によってフォーム データがサーバーに送信され、この関数の戻り値が取得されます。

構文

local-name(field)

引数 説明
フィールド 返すローカル名属性を持つフィールドの名前。

使用例

許可アプリケーションに使用されるフォーム テンプレートを設計しています。 フォーム テンプレートには、Web サービス内のメソッドへのデータ接続があります。 この方法では、請負業者のライセンス番号にフィールドの local-name 属性の値が必要です。 ライセンス番号フィールドの名前は fldLicenseNumber です。

ローカル名属性の値を含むフィールドがあります。 ライセンス番号フィールドのローカル名属性の値を自動的に取得するには、ローカル名属性の値を含むフィールドの既定値として次の数式を使用します。

local-name(fldLicenseNumber)

名前

フィールドまたはグループの名前と名前空間プレフィックスを返します。

  • 引数が繰り返しフィールドまたは繰り返しグループの場合、関数はフォームの最初の繰り返しフィールドまたは繰り返しグループの名前とプレフィックスを返します。
  • ユーザーがブラウザー対応フォーム テンプレートに基づいてフォームに入力すると、この関数を使用する数式によってフォーム データがサーバーに送信され、この関数の戻り値が取得されます。

構文

name(field)

引数 説明
フィールド 名前空間のプレフィックスと名前を返すフィールドの名前。

使用例

許可アプリケーションに使用されるフォーム テンプレートを設計しています。 フォーム テンプレートには、Web サービス内のメソッドへのデータ接続があります。 この方法では、請負業者のライセンス番号のフィールドの name 属性が必要です。 ライセンス番号フィールドの名前は fldLicenseNumber です。

name 属性の値を含むフィールドがあります。 name 属性の値を自動的に取得するには、フィールドの既定値として次の数式を使用します。

name(fldLicenseNumber)

namespace-uri

フィールドまたはグループの完全な名前空間を返します。

  • 引数がフィールドまたはグループのセットの場合、関数はフォームの最初のフィールドまたはグループの名前空間を返します。
  • ユーザーが Web ブラウザー フォームに入力すると、この関数を使用する数式によってフォーム データがサーバーに送信され、この関数の戻り値が取得されます。

構文

namespace-uri(field)

引数 説明
フィールド 取得する名前空間 URI を持つフィールドの名前。

使用例

許可アプリケーションに使用されるフォーム テンプレートを設計しています。 フォーム テンプレートは、Web サービスにデータを送信します。 Web サービスでは、フォーム テンプレートに基づいてフォームからデータを処理するには、データ ソース内の特定の要素フィールドからの名前空間 URI が必要です。 名前空間 URI データを含むフォーム テンプレートのフィールドの名前は fldComplete です。

要素フィールドの名前空間 URI を含むフィールドがあります。 名前空間 URI を自動的に取得するには、名前空間 URI を含むフィールドの既定値として次の式を使用します。

namespace-uri(fldComplete)

位置

同じ親グループ内の他のフィールドまたはグループに関して、フィールドまたはグループのインデックス (または位置) を返します。

この関数は、Web ブラウザー フォーム テンプレートでは使用できません。

構文

position()

使用例

あなたは、サプライヤーが製品在庫を報告するために記入するフォームテンプレートを設計しています。 製品情報は、繰り返しグループのフィールドに格納されます。 繰り返しグループは繰り返しテーブルにバインドされ、仕入先は新規または既存の製品情報を追加または修正できます。

繰り返しテーブルの最初の列で、行番号をテキスト ボックスに表示します。 仕入先が繰り返しテーブルに新しい製品を追加したときに行番号を自動的に表示するには、テキスト ボックスの既定値として次の数式を使用します。

position()

ページの先頭へ

数値演算関数

数学関数を含む数式には、通常、整数または 10 進値の引数が必要です。 引数が null 値ではなく整数または 10 進値であることを確認するには、[ファイル>フォーム オプション>Advanced] をクリックし、[空白の値を 0 チェックとして扱う] ボックスがオンになっていることを確認します。

avg

繰り返しグループ内にあるフィールドの数値の平均を計算します。

繰り返しフィールドは数値データ型で、グループに含める必要があります。

構文

avg(field)

引数 説明
フィールド 平均値を計算するグループ内の繰り返しフィールドの名前。

使用例

あなたは、サプライヤーが製品や在庫を報告するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、fldPrice という名前の繰り返しフィールドが含まれています。このフィールドは、仕入先が販売する各製品に関するデータを含む繰り返しグループ内にあります。 グループは、繰り返しテーブル コントロールにバインドされます。

フォーム テンプレートには、その仕入先が販売するすべての製品の平均価格を含むフィールドがあります。 平均価格を計算するには、平均値のフィールドで次の数式を使用します。

avg(fldPrice)

boolean

フィールドまたはグループが存在する場合は true を返します。 それ以外の場合は、false が返されます。

これは、フィールドに関連付けられたコントロールが削除されていても、フィールドがまだ存在する場合でも true を返します。

構文

boolean(field)

引数 説明
フィールド この関数によってチェックされる繰り返しフィールドまたは繰り返しグループ。

使用例

あなたは、サプライヤーが製品在庫を報告するために使用するフォームテンプレートを設計しています。 製品情報は、grpProduct という名前の繰り返しグループ内のさまざまなフィールドに格納されます。 各繰り返しグループには、各製品に関する情報を含むフィールドが含まれています。 サプライヤーが 7 つの製品に関する情報を提供する場合、フォームには 7 つの繰り返しグループが含まれます。

繰り返しグループは繰り返しテーブル コントロールにバインドされ、仕入先は新規または既存の製品情報を追加または修正できます。 サプライヤーは、繰り返しテーブルの行を追加または削除できます。

ユーザーが繰り返しテーブル内のすべての行を削除する場合は、ダイアログ ボックスを表示します。 繰り返しテーブル コントロールに少なくとも 1 つの行があり、繰り返しテーブル コントロールに行がない場合は "false" という単語が含まれるフィールドをデータ ソースに追加します。

フィールドの値が false の場合にダイアログ ボックスを表示するように、繰り返しテーブル コントロールでルールを構成します。 繰り返しテーブルに少なくとも 1 つの行が含まれているかどうかを自動的に判断するには、フィールドの既定値に "true" または "false" という単語が含まれるように、次の数式を使用します。

boolean(grpProduct)

天井

数値を最も近い整数に丸めます。

構文

ceiling(number)

引数 説明
number 数値を持つフィールドの名前。

使用例

会社の経費報告書フォーム テンプレートを設計しています。 経費は、整数のみを受け入れるパラメーターを持つ Web サービスに送信されます。 このパラメーターに送信される経費の金額は、より大きい整数値に丸める必要があります。 経費金額は fldExpenseAmount という名前のフィールドに格納され、整数値は別のフィールドに格納されます。 より高い整数値を計算するには、次の数式を他のフィールドの既定値として使用します。

ceiling(fldExpenseAmount)

ユーザーがフォーム テンプレートに基づいてフォームを作成し、fldExpenseAmount フィールドに「145.87」と入力した場合、数式を含むフィールドの値は 146 になります。

Eval

フィールドまたはグループの値を返します。 2 番目の引数は、フィールドまたはグループに対して計算する式を定義します。 通常、eval 関数は、合計や平均など、フィールドまたはグループで動作する関数内に入れ子になります。

構文

eval(field, expression)

引数 説明
フィールド 2 番目の引数の式によって値が評価されるフィールドまたはグループの名前。
最初の引数に適用される式。 式には、XPath 関数、または二重引用符 (" ") で囲まれた式を指定できます。

使用例

会社の経費報告書フォーム テンプレートを設計しています。 フォーム テンプレートには、経費金額を含む fldTotal という名前のフィールドが含まれています。 fldTotal フィールドは、grpExpenses という名前の繰り返しグループの一部です。 別のフィールドは、すべての経費の合計を含むテキスト ボックスにバインドされます。 ユーザーが経費金額を入力すると、すべての経費の合計を表示するには、合計経費フィールドで次の式を使用します。

eval(grpExpenses,sum(fldTotal))

false

false を返します。

構文

false()

この関数では引数は使用されません。

使用例

あなたは、請負業者が建築許可を申請するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、連絡先情報のセクションと、建築許可に関連する情報の別のセクションという 2 つのセクションがあります。 このフォームに記入する場合、請負業者は、建物許可セクションに記入する前に連絡先情報セクションに完全に記入する必要があります。

これを行うには、連絡先情報セクションのいずれかのフィールドが空白の場合にブール型フィールドの値を false に設定するルールを作成します。 ブール値フィールドには、ブール値 true 値またはブール値 false 値を指定できます。 ブール型フィールドの値が false の場合は、建物の許可情報を含むセクション コントロールを非表示にするように条件付き書式を構成することもできます。

建物許可情報のフィールドを含むセクション コントロールを非表示にするには、連絡先情報セクションのいずれかのフィールドが空白の場合、ブール型フィールドでこの関数を実行するルールを構成します。

floor

指定された数値を最も近い整数に切り捨てます。

書式

floor(number)

引数 説明
number 数値を持つフィールドの名前。

使用例

会社の経費報告書フォーム テンプレートを設計しています。 経費は、整数のみを受け入れるパラメーターを使用する Web サービスに送信されます。 このパラメーターに送信される経費の金額は、小さい整数値に丸める必要があります。 経費金額は fldExpenseAmount という名前のフィールドに格納され、整数値は別のフィールドに格納されます。 小さい整数値を計算するには、他のフィールドの既定値として次の数式を使用します。

floor(fldExpenseAmount)

max

フィールドまたはグループ内の最大の数値を返します。

構文

max(field)

引数 説明
フィールド グループ内の繰り返しフィールド、または最大値を検索する繰り返しグループ内のフィールド。

使用例

仕入先が製品在庫を報告するためにフォームを使用するフォーム テンプレートを設計しています。 フォーム テンプレートには、仕入先の製品に関するデータを含む複数のフィールドを含む繰り返しグループが含まれています。 繰り返しグループの fldPrice という名前のフィールドには、製品の価格が含まれています。

フォーム テンプレートのデータ ソースの別のフィールドには、そのサプライヤーによって販売されたすべての製品の最高価格が含まれます。 最高価格を返すには、最高価格フィールドで次の数式を使用します。

max(fldPrice)

min

フィールドまたはグループ内の最小の数値を返します。

構文

min(field)

引数 説明
フィールド グループ内の繰り返しフィールド、または最大値を検索する繰り返しグループ内のフィールド。

使用例

仕入先が製品在庫を報告するためにフォームを使用するフォーム テンプレートを設計しています。 フォーム テンプレートには、仕入先製品に関するデータを含む複数のフィールドを含む繰り返しグループが含まれています。 繰り返しグループの fldPrice という名前のフィールドには、製品の価格が含まれています。

フォーム テンプレートのデータ ソースの別のフィールドには、そのサプライヤーによって販売されたすべての製品の最低価格が含まれます。 最低価格を返すには、[最低価格] フィールドで次の数式を使用します。

min(fldPrice)

ありません

ブール値が false または null の場合は true を返します。 ブール値が true の場合、または null でない場合は false を返します。

構文

not(boolean_value)

引数 説明
boolean_value ブール型のデータ型を持つフィールド。

使用例

あなたは、請負業者が建築許可を申請するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、連絡先情報のセクションと、建物の許可に関連する情報の別のセクションがあります。 このフォームに記入する場合、請負業者は、建物許可セクションに記入する前に連絡先情報セクションに完全に記入する必要があります。

これを行うには、連絡先情報セクションのいずれかのフィールドが空白のままである場合にブール型フィールドの値を false に設定するルールを作成します。 ブール値フィールドには、ブール値 true またはブール値 false を指定できます。 次に、ブール型フィールドの値が false の場合、同じ数式を使用して、建物の許可情報を含むセクション コントロールを非表示にします。 このルールを設定するには、次の数式を使用して、ブール型フィールドを false に設定します。

not(true())

number

値を数値に変換します。

引数の値を数値に変換できない場合、関数は NaN を返します。

構文

number(value)

ArgumentDescription

value数値に変換する値を持つフィールド。

使用例

あなたは、請負業者が建築許可を申請するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、請負業者が勤務先住所を入力できるセクションが含まれています。 請負業者が有効なアドレスを入力していることを確認するには、アドレスを確認できる Web サービスへのデータ接続を使用します。 アドレスが確認された場合、請負業者はフォームを SQL データベースに送信できます。 SQL データベースでは、住所番号と番地名の両方にテキスト フィールドが使用されます。 Web サービスでは、アドレス番号が数値データ型であり、ストリート名がテキスト データ型である必要があります。

Web サービスと SQL データベースの両方にデータを送信するには、アドレスを 2 つの異なるデータ型として格納する必要があります。

  • Web サービスにアドレスを送信するには、アドレス番号を数値データ型にし、番地名をテキスト データ型にする必要があります。
  • SQL データベースにアドレスを送信するには、アドレス番号と番地名の両方がテキスト データ型である必要があります。

また、請負業者に住所を 1 回だけ入力する必要もあります。 アドレスを正しいデータ型に変換し、請負業者が住所を 1 回だけ入力できるように、フォーム テンプレートには、住所番号を入力するための fldAddressNumber という名前のフィールドと、番地名を入力するための別のフィールドが含まれています。 どちらのフィールドもテキスト データ型として構成されます。

アドレス番号を Web サービスに送信するには、fldAddressNumber フィールド (テキスト データ型として格納) のデータを数値データ型に変換する必要があります。 数値データ型に変換されたアドレス番号の値は、数値データ型を格納するように構成された別のフィールドに格納されます。

アドレス番号をテキスト データ型から数値データ型に変換するには、fldAddressNumber フィールドの既定値として次の数式を使用します。

number(fldAddressNumber)

nz

すべての空白フィールドが 0 (0) に置き換えられたフィールドまたはグループを返します。

構文

nz(field)

引数 説明
フィールド 値にチェックするフィールド。

使用例

あなたは、サプライヤーが製品在庫を報告するために記入するフォームテンプレートを設計しています。 サプライヤーは、フォーム テンプレートに基づくフォームを通じて、製品インベントリを Web サービスに送信します。 Web サービスのメソッドでは、数値データを含むすべての要素に数値が必要です。 Web サービスは、空の数値要素を含むフォームを拒否します。

フォーム テンプレートには fldAvailability という名前のフィールドが含まれています。このフィールドには、この製品を提供するサプライヤーの機能に対応する数値が含まれています。 仕入先は、このフィールドに数値を入力できます。 仕入先がフォーム テンプレートに基づいてフォームを Web サービスに送信し、仕入先が数値を入力しない場合にフィールドの値を自動的に 0 に設定できるように、このフィールドの既定値として次の数式を使用します。

nz(fldAvailability)

数値を最も近い整数に丸めます。

非整数値が 2 つの丸められた整数値のちょうど中間にある場合、戻り値は次に大きい整数値です。

構文

round(number)

引数 説明
number この数式を使用して丸める数値を含むフィールド。

使用例

仕入先が製品在庫を報告するためにフォームを使用するフォーム テンプレートを設計しています。 フォーム テンプレートには、仕入先の製品に関するデータを含む複数のフィールドを含む繰り返しグループが含まれています。 繰り返しグループの fldPrice と呼ばれるフィールドの 1 つに、製品の価格が含まれています。

フォーム テンプレートには、Web サービスへの送信データ接続があります。 Web サービスメソッドでは、各価格を整数値に丸める必要があります。 Web サービス メソッドに適切な値を送信するには、繰り返しフィールドをデータ ソースに追加します。 このフィールドでは、次の数式を使用して、fldPrice フィールドの価格を整数値に丸めます。

round(fldPrice)

合計

フィールドまたはグループ内のすべてのフィールドの合計を返します。 各フィールドは、最初に数値に変換されます。

構文

sum(field)

引数 説明
フィールド 繰り返しグループ内のフィールドの名前、または値が追加されるグループ内の繰り返しフィールドの名前。 2 つの異なるグループからフィールドを追加するには、共用体演算子 (|) を使用して引数を区切ります。 例: sum( フィールド名 1 | フィールド名 2)。

使用例

経費精算書フォーム テンプレートを設計しています。 フォーム テンプレートには、経費明細を含むグループがあります。 各項目の量は、fldExpenseAmount という名前のフィールドに格納されます。 グループは、各経費項目を行として表示する繰り返しテーブルにバインドされます。 フォーム テンプレートには、経費の合計を表示するテキスト ボックス コントロールが含まれています。 合計経費を表示するには、テキスト ボックス コントロールに次の数式が含まれています。

sum(fldExpenseAmount)

true

true を返します。

構文

true()

この関数では引数は使用されません。

使用例

あなたは、請負業者が建築許可を申請するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、連絡先情報の 1 つのセクションと、建築許可に関連する情報の別のセクションが含まれています。 このフォームに記入する場合、請負業者は、建物許可セクションに記入する前に連絡先情報セクションに完全に記入する必要があります。

これを実現するには、連絡先情報セクションのすべてのフィールドにデータが含まれている場合にブール値フィールドの値を true に設定するルールを作成します。 ブール値フィールドには、ブール値 true または false を指定できます。 ブール型フィールドの値が true の場合は、建物の許可情報を含むセクション コントロールが表示されます。

建物の許可情報を含むセクション コントロールを表示するには、連絡先情報セクションのすべてのフィールドにデータが含まれている場合、ブール型フィールドでこの関数を実行するようにルールを構成します。

ページの先頭へ

文字列関数

Concat

テキスト文字列の 2 つ以上のフィールドを 1 つのテキスト文字列に結合します。

構文

concat(text1, text2, ...)

引数 説明
text1 引数 2 のテキストを含む 1 行のテキストに結合するテキストを含むフィールド。
text2、... 前のフィールドと組み合わせるテキストを含む Ore 以上の追加フィールド。 テキスト フィールドはコンマで区切ります。

使用例

fldFirstName という名前のフィールドと fldLastName という名前のフィールドを含むフォーム テンプレートを設計しています。 次の数式を 3 番目のフィールドに追加して、"このフォームは <firstname><lastname>" というテキストを含めます。

concat("このフォームは、", fldFirstName, " ", fldLastName, "" によって入力されました。

スペースや句読点など、テキスト引数として入力された実際のテキストは、引用符 (") で挿入する必要があります。

contains

最初のフィールドまたはテキスト文字列に 2 番目のフィールドが含まれている場合は true を返します。 それ以外の場合は、false が返されます。

構文

contains(within_text, find_text)

引数 説明
対象 検索するテキストを含むフィールド。
検索文字列 最初の引数で検索する二重引用符 (" ") で囲まれたテキストまたはテキストを含むフィールド。

使用例

3 つのテキスト フィールドを含むフォーム テンプレートを設計しています。 最初のテキスト コントロールでは、fldText という名前の最初のテキスト コントロールに長いテキストを入力できます。 2 つ目は、ユーザーがテキストの短いセグメントを入力することを許可し、fldFindText という名前になります。 3 番目のテキスト ボックスは、2 番目のテキスト ボックスと最初のテキスト ボックスを比較し、2 番目のフィールドの値が最初のフィールドに見つかり、結果を表示するかどうかを示します。 既定値として次の数式が含まれます。

contains(fldText,fldFindText)

normalize-space

テキスト文字列から空白文字を削除します。

これにより、テキスト データ型を持つフィールドから、先頭、末尾、および繰り返し空白文字が削除されます。

構文

normalize-space(text)

引数 説明
text 削除する先頭、末尾、または繰り返し空白を含むテキスト。 テキストを二重引用符 (" ") で囲みます。

使用例

fldText という名前のフィールド (テキスト ボックス コントロールにバインドされている) を含むフォーム テンプレートを設計します。 最初のフィールドに入力したテキストを正規化し、余分な空白を付けずに最初のフィールドの値を表示するには、次の数式を既定値として 2 番目のフィールドを追加します。

normalize-space(fldText)

starts-with

最初のフィールドまたはテキスト文字列が 2 番目のフィールドで始まる場合は true を返します。 それ以外の場合は false を返します。

構文

starts-with(text, start_text)

引数 説明
text 検索するテキストを含むフィールドの名前。 引数はコンマで区切ります。
start_text 最初の引数で指定されたフィールドの先頭で検索するテキスト。 この引数には、二重引用符 (" ") で囲まれたフィールドまたはテキストを指定できます。

使用例

3 つのテキスト フィールドを含むフォーム テンプレートを設計しています。 最初のテキスト コントロールでは、fldText という名前の最初のテキスト コントロールに長いテキストを入力できます。 2 つ目は、ユーザーがテキストの短いセグメントを入力することを許可し、fldFindText という名前になります。 3 番目のテキスト ボックスは、2 番目のテキスト ボックスと最初のテキスト ボックスを比較し、最初のフィールドの値が 2 番目のフィールドの値で始まり、結果を表示するかどうかを示します。 既定値として次の数式が含まれます。

starts-with(fldText, fldFindText)

文字列

値をテキスト文字列に変換します。

構文

string(value)

引数 説明
テキストに変換する値を含むフィールド。

使用例

あなたは、請負業者が建築許可を申請するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、請負業者がビジネス アドレスを入力できるセクションが含まれています。 請負業者が有効なアドレスを入力していることを確認するために、フォーム テンプレートには、アドレスを確認できる Web サービスへのデータ接続があります。 アドレスが確認された場合、請負業者はフォームを SQL データベースに送信できます。 SQL データベースでは、番地にテキスト フィールドを使用します。 Web サービスでは、アドレス番号が数値データ型であり、ストリート名がテキスト データ型である必要があります。

Web サービスと SQL データベースの両方にデータを送信するには、アドレスを 2 つの異なるデータ型に格納する必要があります。

  • アドレスを Web サービスに送信するには、アドレス番号が数値データ型である必要があります。
  • SQL データベースにアドレスを送信するには、アドレス番号と番地名の両方がテキスト データ型である必要があります。

また、請負業者に住所を 1 回だけ入力する必要もあります。 住所を正しいデータ型に変換し、請負業者が住所を 1 回だけ入力できるように、フォームには fldAddressNumber という名前の住所番号を入力するためのフィールドと、番地名を入力するための別のフィールドが含まれています。 fldAddressNumber フィールドは数値データ型で、番地名フィールドはテキスト データ型です。

完全なアドレス (住所番号と番地名の両方) を SQL データベースに送信するには、fldAddressNumber フィールドと番地名フィールドの値をテキスト データ型の 1 つの値に結合する必要があります。 まず、データを数値データ型として格納する fldAddressNumber フィールドの数値データをテキスト データ型に変換する必要があります。 完全なアドレスをテキスト データ型として含むフィールドをデータ ソースに追加します。

fldAddressNumber フィールドのテキスト データをテキスト データ型に変換して Web サービスを使用できるようにするには、アドレス番号をテキスト データ型として含む別のフィールドを構成します。 アドレス番号を数値データ型からテキスト データ型に変換するには、このフィールドの既定値として次の数式を使用します。

string(fldAddressNumber)

string-length

テキスト文字列内の文字数を返します。

構文

string-length(text)

引数 説明
text カウントするテキストの値を持つフィールド。

使用例

テキスト ボックス コントロールにバインドされている fldText という名前のフィールドを含むフォーム テンプレートを設計しています。 フォーム テンプレートには、最初のフォームに入力された文字数をカウントするために使用される 2 番目のフィールドが含まれています。 これを行うには、2 番目のフィールドに既定値として次の数式が含まれます。

string-length(fldText)

substring

テキスト文字列の特定の部分を返します。 2 番目の引数は開始位置を指定し、3 番目の引数は含める文字数を指定します。

構文

substring(text, start_position, char_count)

引数 説明
text 二重引用符 (" ") で囲まれたテキスト データ型またはテキストを含むフィールド。 関数は、このテキストを検索し、2 番目の引数で指定された位置から 3 番目の引数で指定された文字数まで、またはテキストの末尾までのすべての文字を返します。どちらか早い方です。
start_position 最初の引数から取得するテキストの開始位置。 この引数は、整数または整数 (整数) データ型を格納するように構成されたフィールドへの参照である必要があります。
char_count 2 番目の引数で指定された開始位置から始まる、取得する文字数。 この引数は、整数または整数 (整数) データ型を格納するように構成されたフィールドへの参照である必要があります。

使用例

次のフィールドとコントロールを含むフォーム テンプレートを設計しています。

  • テキスト ボックス コントロールにバインドされている fldText という名前のフィールド。 このフィールドには、関数が検索するテキストが含まれます。
  • テキスト ボックス コントロールにバインドされている fldStartingPosition という名前のフィールド。 このフィールドは、整数データ型として構成されます。 フィールドには、関数の開始位置が含まれます。
  • テキスト ボックス コントロールにバインドされている fldNumberOfCharacters という名前のフィールド。 このフィールドは、整数データ型として構成されます。 フィールドには、関数から返される文字数が含まれます。
  • 関数の結果を示すテキスト ボックス コントロール。 テキスト ボックス コントロールには、次の数式が含まれています。

substring(fldText, fldStartingPosition, fldNumberOfCharacters)

ユーザーが「このフォームは InfoPath フォーム テンプレートから作成されました」と入力した場合。 最初のテキスト ボックスに 4、2 番目に 4、3 番目のテキスト ボックスに 16 が続き、4 番目のテキスト ボックスに "s フォームが作成されました" が含まれます。

substring-after

2 番目のテキスト文字列の最初の出現に続く最初のテキスト文字列のテキストを返します。

構文

substring-after(text, find_text)

引数 説明
text 二重引用符 (" ") で囲まれたテキスト データ型またはテキストを含むフィールド。 関数は、この引数のテキストを検索し、2 番目の引数のテキストに続くすべての文字を返します。
検索文字列 最初の引数のテキストで検索するテキスト。 テキストは、テキスト データ型を持つフィールドの値、または二重引用符 (" ") で囲まれたテキストのいずれかです。 関数は、このテキストの最初の引数のテキストを検索し、この引数のテキストに続くすべての文字を返します。

使用例

次のフィールドとコントロールを含むフォーム テンプレートを設計しています。

  • テキスト ボックス コントロールにバインドされている fldText という名前のフィールド。 このフィールドには、関数が検索するテキストが含まれます。
  • テキスト ボックス コントロールにバインドされている fldSubstringText という名前のフィールド。 このフィールドには、関数の 2 番目の引数であるテキストが含まれています。
  • 関数の結果を示すテキスト ボックス コントロール。 テキスト ボックス コントロールには、次の数式が含まれています。

substring-after(fldText, fldSubstringText)

ユーザーが「このフォームは InfoPath フォーム テンプレートから作成されました」と入力した場合。 を fldText フィールドに、2 番目のテキスト ボックス コントロールに "フォーム テンプレート" を含めます。

substring-before

2 番目のテキスト文字列の最初の出現位置の前にある最初のテキスト文字列内のテキストを返します。

構文

substring-before(text, find_text)

引数 説明
text 二重引用符 (" ") で囲まれたテキスト データ型またはテキストを含むフィールド。 関数は、この引数内のテキストを検索し、2 番目の引数のテキストの前にあるすべての文字を返find_text。
検索文字列 テキスト引数で検索する値。 この値は、テキスト データ型を持つフィールドの値、または二重引用符 (" ") で囲まれたテキストのいずれかです。 関数は、このテキストの最初の引数 (テキスト) 内のテキストを検索し、この引数のテキストの前にあるすべての文字を返します。

使用例

次のフィールドとコントロールを使用してフォーム テンプレートを設計しています。

  • テキスト ボックス コントロールにバインドされている fldText という名前のフィールド。 このフィールドには、関数が検索するテキストが含まれます。
  • テキスト ボックス コントロールにバインドされている fldSubstringText という名前のフィールド。 このフィールドには、関数の 2 番目の引数であるテキストが含まれています。
  • 関数の結果を示す Aa テキスト ボックス コントロール。 テキスト ボックス コントロールには、次の数式が含まれています。

substring-before(fldText, fldSubstringText)

ユーザーが「このフォームは InfoPath フォーム テンプレートから作成されました」と入力した場合。 fldText フィールドに、2 番目のテキスト ボックス コントロールに "このフォームが含まれる" と 2 番目のテキスト ボックス コントロールに "created" が含まれます。

翻訳

2 番目のテキスト文字列の各文字を、3 番目のテキスト文字列の対応する位置の文字に置き換えた最初のテキスト文字列を返します。

構文

translate(text, find_chars, replace_chars)

引数 説明
text 文字が置き換えられるテキストを含むフィールドの名前。 引数はコンマで区切ります。
find_chars 3 番目の引数の文字に置き換えられるテキスト データ型を持つフィールドの文字または値。 引数はコンマで区切ります。
replace_chars 2 番目の引数の文字のすべてのインスタンスを置き換えるテキスト データ型を持つ文字またはフィールドの値。

使用例

あなたは、請負業者が建築許可を申請するためにフォームを使用するフォームテンプレートを設計しています。 フォーム テンプレートには、請負業者がビジネス アドレスを入力できるセクションが含まれています。 セクションには fldStreetAddress という名前のフィールドが含まれています。このフィールドは、請負業者が番地を入力できるテキスト ボックス コントロールにバインドされています。

請負業者が有効なアドレスを入力していることを確認するには、アドレスを確認できる Web サービスへのデータ接続があります。 Web サービスでは、アドレスに小文字が必要です。

番地の大文字を小文字に変換するには、別のフィールドをデータ ソースに追加して、小文字に変換される番地を含めます。 このフィールドの既定値には、次の数式が含まれています。

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/" のみを返します。

ページの先頭へ

userName 関数

userName

フォームに入力するユーザーのユーザー名 (Microsoft InfoPath 2007 以降) を返します。

ユーザーが Web ブラウザーでフォームに入力している場合、ユーザー名は Microsoft Windows SharePoint Services 3.0 以降から取得されます。

構文

userName()

この関数では引数は使用されません。

使用例

会社の経費報告書フォーム テンプレートを設計しています。 クレジット カード会社は、従業員の経費の記録を会社が管理するデータベースに電子的に送信します。 従業員の経費レコードを取得するには、データベースには、フォーム テンプレートに基づくフォームに入力している従業員のユーザー名が必要です。

フォーム テンプレートのデータ ソースにフィールドを追加して、従業員のユーザー名を格納します。 また、クエリでこのフィールドの値を使用して経費を取得するクエリ データ接続も作成します。

経費精算書に記入する従業員が正しいユーザー名を使用していることを確認するには、フィールドをテキスト ボックス コントロールにバインドします。 このフォーム テンプレートに基づいてフォームを作成するユーザーのユーザー名を表示するには、テキスト ボックス コントロールにバインドされたフィールドの既定値として次の式を使用します。

userName()

ページの先頭へ