注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。簡単に参照できるように、こちらに英語の記事があります。
数式を使用してルールを作成すると、あらかじめ定義されている基本的なルールではできないさまざまなことが可能になります。たとえば、現在の日付や将来の日付を計算したり、文字列を連結したりすることができます。
内容
概要
数式とは、他の値を計算して表示するための値、フィールドまたはグループ、関数、演算子で構成される XPath (XML パス言語) 式です。数式を使用すると、フィールドの新しい値を計算し、その値をそのフィールドにバインドされているコントロールに表示できます。数式の用途の例を以下に示します。
テンプレートのデザイン時に指定した値やフォーム テンプレートの入力時に入力された値に基づいて数値を計算します。
数式を使用して計算された値に基づいてルールを実行します。
他のコントロールから計算された読み取り専用のテキストや、別のコントロールの値を表示します。
関数とは、計算結果に基づいて値を返す式です。関数で使用される値は引数と呼ばれます。InfoPath 固有の関数に加えて、InfoPath に含まれている XPath 1.0 の標準の関数を使用できます。関数には、次の 3 つの部分があります。
-
Name 関数の名前は、通常、関数が実行するアクションのヒントとして提供されます。
-
戻り値 関数の結果。
-
引数 計算を実行するために関数によって使用される値。
関数では、値を返すために引数が必要なことがあります。関数で引数が必要な場合は、必要な引数の数と、各引数のデータ型について知っている必要があります。これらを間違って指定すると、関数は機能しません。
次の図は、関数、式、および数式の関係を示しています。
算出値コントロールを追加する
算出値コントロールを使用すると、読み取り専用テキストの表示、フォームにある別のコントロールの値の表示、および XPath 式に基づいた数式の作成を行うことができます。たとえば、経費を記録するためのフォーム テンプレートに算出値コントロールを追加して、入力された経費の合計を表示することができます。
注: 算出値コントロールは、データを表示するだけで、格納はしません。したがって、値を保存したり別の数式で参照したりする必要がない場合にのみ使用するようにしてください。
-
フォーム テンプレートで、コントロールを挿入する位置にカーソルを置きます。
-
[ホーム] タブの [コントロール] で、[算出値] コントロールをクリックします。
-
[算出値の挿入] ダイアログ ボックスで、次のいずれかの操作を行います。
-
算出値コントロールにテキストまたは XPath 式を直接入力する場合は、それらを [XPath] ボックスに入力します。
-
数式を挿入するには、[数式 の編集] をクリックし、必要に応じて、次の操作を行う [数式] ボックスに目的の数式を入力します。
-
数式にフィールドまたはグループを挿入するには、[フィールドまたはグループの挿入] をクリックし、[フィールドまたはグループの選択] ダイアログ ボックスで目的のフィールドまたはグループをクリックして、[OK] をクリックします。
-
数式に関数を挿入するには、[関数の挿入] をクリックし、[関数の挿入] ダイアログ ボックスで目的の関数を選択して、[OK] をクリックします。
関数にパラメーターが必要な場合は、[関数の挿入] ダイアログ ボックスで関数を選択し、[OK] をクリックします。次に、[数式] テキスト領域で、示された場所をダブルクリックし、目的のパラメーターを選択してから、[OK] をクリックします。
-
数式に値または算術演算子を挿入するには、その値または算術演算子を表す記号を [数式] ボックスに入力します。
算術演算子には、加算 (+)、減算 (-)、乗算 (*)、および除算 (/) があります。
数式は通常、引数として整数または decimal 値によって異なります。数式の空白値を回避するには、[ファイル] タブで [フォームのオプション] をクリックし、[詳細設定] を選び、[空白値を 0にする] が選択されていることを確認します。
-
-
コントロールに数式を追加する
算出値コントロールを使用すると数式の結果を表示できますが、使用できるのは算出値コントロールだけではありません。数式を使用してその他のコントロール (テキスト ボックスなど) の既定値を設定することもできます。コントロールの既定値を設定するには 2 つの方法があります。1 つは、[フィールドまたはグループのプロパティ] ダイアログ ボックスの [値] フィールドに目的の値をそのまま入力して、静的な既定値を使用する方法です。もう 1 つは、数式を使用して、フォームのその他の値に基づいてフィールドの既定値を設定する方法です。数式に基づいてフィールドの既定値を設定するには、次の操作を行います。
-
数式を追加するコントロールを選択し、[コントロール ツール] の [プロパティ] タブの [プロパティ] で [既定値] をクリックします。
-
[値] ボックスの横にある [数式の挿入] をクリックします。
-
[数式] ボックスに目的の数式を入力します。必要に応じて以下の操作を行います。
-
数式にフィールドまたはグループを挿入するには、[フィールドまたはグループの挿入] をクリックし、[フィールドまたはグループの選択] ダイアログ ボックスで目的のフィールドまたはグループをクリックして、[OK] をクリックします。
-
数式に関数を挿入するには、[関数の挿入] をクリックし、[関数の挿入] ダイアログ ボックスで目的の関数を選択して、[OK] をクリックします。
関数にパラメーターが必要な場合は、[関数の挿入] ダイアログ ボックスで関数を選択し、[OK] をクリックします。次に、[数式] テキスト領域で、示された場所をダブルクリックし、目的のパラメーターを選択してから、[OK] をクリックします。
-
数式に値または算術演算子を挿入するには、その値または演算子を表す記号を [数式] ボックスに入力します。
算術演算子には、加算 (+)、減算 (-)、乗算 (*)、および除算 (/) があります。
ヒント: 数式は通常、引数として整数または decimal 値によって異なります。数式内の空白値を回避するには、[ファイル] タブで [フォームのオプション] をクリックし、[詳細設定] を選びます。空白値をゼロとして扱うことを確認します。
-
-
数式を XPath 数式として編集するには、[XPath を編集する (上級)] チェック ボックスをオンにします。数式が、XPath 式の形式で表示されます。
-
数式の構文が正しいかどうかを確認するには、[数式の確認] をクリックします。数式に誤りがある場合は、次の操作を行います。
数式の誤りに関する情報を表示するには、[Microsoft InfoPath] ダイアログ ボックスの [詳細の表示] をクリックします。間違いの修正方法に関するヒントを次に紹介します。
-
数式で関数を使用している場合は、その関数に適切な引数が渡されているかどうかを確認してください。一部の関数にはフィールドやグループを引数として指定できますが、引数として特定の値を必要とする関数もあります。
-
必要に応じて、数式を削除してから正しく入力し直してみてください。
-
[OK] をクリックします。
-
フィールドの既定値の基になる値が変更された場合に既定値が更新されるようにするには、[数式の再計算時に値を更新する] チェック ボックスをオンにします。このチェック ボックスをオンにした場合は、[OK] をクリックした後、[コントロール ツール] の [プロパティ] タブの [プロパティ] で [コントロールのプロパティ] をクリックし、[表示] タブをクリックして、[読み取り専用] チェック ボックスをオンにします。
ルールで数式を使用する
式を使用して条件を制御するには、入力規則、書式設定、またはアクションルールで条件を指定することができます。これを行うには、コントロールまたはフォームテンプレートにルールを割り当てるときに、[条件] ダイアログボックスの3番目のドロップダウンリストから [数式を使用する] を選択します。
日付と時刻の関数
addDays
日付または日付と時刻に日数を加算します。
構文
addDays(date, days)
引数 |
説明 |
date |
2 番目の引数の日数がこの引数の日付に足されます。この引数は日付 (date) 型または日付と時刻 (dateTime) 型とすることができます。 |
days |
最初の引数の日付に足す日数。このパラメーターは、整数 (integer) 型である必要があります。この引数で負の数を使用すると、戻り値が前の日付になります。 |
例
今日から 60 日後の日付を格納するフィールドをフォーム テンプレートに追加するとします。このフォーム テンプレートには、今日の日付を既定値とする fldToday というフィールドが含まれています。この関数を使用して新しい日付を計算するには、新しい日付のフィールドで次の数式を使用します。
addDays(fldToday, 60)
addSeconds
時刻または日付と時刻に秒数を加算します。
構文
addSeconds(time, seconds)
引数 |
説明 |
time |
フォーム テンプレートの別のフィールドへの参照か、日付または時刻の関数 (now()、today() など) の結果である、日付と時刻の値または時刻値。2 番目の引数の秒数がこの引数の時刻に足されます。この引数は日付 (date) 型または日付と時刻 (dateTime) 型とすることができます。この引数が時刻型の場合は時刻型が返され、日付型の場合は日付と時刻型が返されます。 |
seconds |
最初の引数の日付と時刻の値または時刻値に足す秒数。このパラメーターのフィールドは、整数 (integer) 型である必要があります。この引数で負の数を使用すると、戻り値が前の日付と時刻または前の時刻になります。 |
例
フォーム テンプレートに、現在の時刻を既定値として使用する fldCurrentTime というフィールドと、数式で addSeconds 関数を使用して現在の時刻の 120 秒後の時刻を表示するフィールドがあるとします。この関数を使用してこの新しい時刻値を計算するには、2 番目のフィールドに次の数式を入力します。
addSeconds(fldCurrentTime, 120)
now
システムの現在の日付と時刻を返します。
現在の日付のみが必要な場合は today 関数を使用してください。
構文
now()
この関数では引数を使用しません。
例
フォーム テンプレートに基づくフォームが作成された日付と時刻を取得するには、フィールドで次の数式を使用します。
now()
today
システムの現在の日付を返します。SharePoint リストの日付フィールドには now() 関数を使用します。
日付と時刻の両方が必要な場合は now 関数を使用してください。
構文
today()
この関数では引数を使用しません。
例
フォーム テンプレートに基づくフォームが作成された日付を取得するには、フィールドで次の数式を使用します。
today()
フィールド関数
count
フィールドまたはグループのインスタンス数をカウントします。
構文
count(field)
引数 |
説明 |
field |
フォームでカウントする繰り返しフィールドまたは繰り返しグループの名前。 |
例
仕入先が商品と在庫の報告に使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、仕入先によって送信される商品のための grpProduct という繰り返しグループが含まれています。各グループには、商品とその在庫状況に関する情報が含まれます。このフォーム テンプレートに基づくフォームに仕入先が商品を追加すると、この繰り返しグループの新しいインスタンスが作成されます。
このフォーム テンプレートのデータ ソースには、仕入先によって送信された商品の数を格納するフィールドがあります。このフィールドで、仕入先によって送信された商品の数 (繰り返しグループ grpProduct のインスタンスの数) を自動的に計算するには、次の数式を使用します。
count(grpProduct)
last
繰り返しフィールドまたは繰り返しグループの最後のインスタンスを返します。
注: ブラウザー互換フォーム テンプレートをデザインするときには、この関数は [関数の挿入] ダイアログ ボックスの [関数] ボックスの一覧に表示されません。
構文
field_name[last()]
この関数自体には必須のパラメーターはありませんが、この関数を、指定されたフィールド名の述語として使用できます。
例
仕入先が商品の在庫情報を報告するために入力するフォーム テンプレートをデザインするとします。このフォーム テンプレートには、すべての商品の商品情報が入力されているかどうかを確認するメソッドを含む Web サービスへのデータ接続があります。このメソッドには、仕入先によって送信された一連の商品の最後の商品を渡す必要があります。
商品情報は、grpProduct という繰り返しグループのさまざまなフィールドに格納されます。仕入先がフォームに商品を追加すると、この繰り返しグループの新しいインスタンスが追加されます。仕入先が複数の商品を報告する場合は、フォームのデータ ソースに grpProduct 繰り返しグループの複数のインスタンスが含まれます。
Web サービスに正しい情報が送信されるようにするには、仕入先から送信された一連の商品の最後の商品に関する情報を格納するフィールドを追加し、そのフィールドの既定値として次の数式を使用して、自動的に最後の商品が取得されるようにします。
grpProduct[last()]
local-name
フィールドまたはグループのローカル名を返します。
注:
-
引数が繰り返しフィールドまたは繰り返しグループの場合は、最初の繰り返しフィールドまたは繰り返しグループの値が返されます。
-
ユーザーが Web ブラウザー フォームに入力すると、この関数を使用する数式からサーバーにフォーム データが送信され、この関数の戻り値が取得されます。
構文
local-name(field)
引数 |
説明 |
field |
local name 属性を取得するフィールドの名前。 |
例
許可申請書に使用されるフォーム テンプレートをデザインするとします。このフォーム テンプレートには、Web サービスのメソッドへのデータ接続があります。このメソッドには、請負業者のライセンス番号のフィールドの local-name 属性の値を渡す必要があります。ライセンス番号フィールドの名前は fldLicenseNumber です。
このフォーム テンプレートには、local-name 属性の値を格納するフィールドがあります。このフィールドで、ライセンス番号フィールドの local-name 属性の値を自動的に取得するには、フィールドの既定値として次の数式を使用します。
local-name(fldLicenseNumber)
name
フィールドまたはグループの名前と名前空間のプレフィックスを返します。
注:
-
引数が繰り返しフィールドまたは繰り返しグループの場合は、フォームの最初の繰り返しフィールドまたは繰り返しグループの名前とプレフィックスが返されます。
-
ユーザーがブラウザー対応フォーム テンプレートに基づくフォームに入力すると、この関数を使用する数式からサーバーにフォーム データが送信され、この関数の戻り値が取得されます。
構文
name(field)
引数 |
説明 |
field |
名前空間のプレフィックスと名前を取得するフィールドの名前。 |
例
許可申請書に使用されるフォーム テンプレートをデザインするとします。このフォーム テンプレートには、Web サービスのメソッドへのデータ接続があります。このメソッドには、請負業者のライセンス番号のフィールドの name 属性を渡す必要があります。ライセンス番号フィールドの名前は fldLicenseNumber です。
このフォーム テンプレートには、name 属性の値を格納するフィールドがあります。このフィールドで、name 属性の値を自動的に取得するには、フィールドの既定値として次の数式を使用します。
name(fldLicenseNumber)
namespace-uri
フィールドまたはグループの完全な名前空間を返します。
注:
-
引数が複数のフィールドまたはグループである場合、この関数はフォームの最初のフィールドまたはグループの名前空間を返します。
-
ユーザーが Web ブラウザー フォームに入力すると、この関数を使用する数式からサーバーにフォーム データが送信され、この関数の戻り値が取得されます。
構文
namespace-uri(field)
引数 |
説明 |
field |
名前空間 URI を取得するフィールドの名前。 |
例
許可申請書に使用されるフォーム テンプレートをデザインするとします。このフォーム テンプレートは、データを Web サービスに送信します。この Web サービスで、このフォーム テンプレートに基づくフォームのデータを処理するには、データ ソースの特定の要素フィールドに格納されている名前空間 URI を渡す必要があります。この名前空間 URI のデータは、フォーム テンプレートの fldComplete というフィールドに格納されています。
このフォーム テンプレートには、この要素フィールドの名前空間 URI を格納するフィールドがあります。このフィールドで、名前空間 URI を自動的に取得するには、フィールドの既定値として次の数式を使用します。
namespace-uri(fldComplete)
position
同じ親グループの他のフィールドまたはグループに関するフィールドまたはグループのインデックス (位置) を返します。
注: この関数は、Web ブラウザー フォーム テンプレートでは使用できません。
構文
position()
例
仕入先が商品の在庫情報を報告するために入力するフォーム テンプレートをデザインするとします。商品情報は、繰り返しグループのフィールドに格納されます。この繰り返しグループは、繰り返しテーブルにバインドされています。仕入先は、この繰り返しテーブルを使用して、新しい商品情報を追加したり既存の商品情報を改訂したりできます。
この繰り返しテーブルの最初の列には、行番号が表示されるテキスト ボックスがあります。仕入先がこの繰り返しテーブルに新しい商品を追加すると自動的に行番号が表示されるようにするには、このテキスト ボックスの既定値として次の数式を使用します。
position()
数学関数
数学関数を含む数式には、通常、整数または decimal 値の引数が必要です。引数が null 値の代わりに整数または decimal 値であることを確認するには、[ファイル]、[フォームのオプション]、[詳細設定] の順にクリックして、[空白値をゼロとして処理する] チェックボックスをオンにします。
avg
繰り返しグループ内のフィールドの数値の平均を計算します。
注: 繰り返しフィールドは数値型であり、グループに含まれている必要があります。
構文
avg(field)
引数 |
説明 |
field |
平均値を計算する、グループ内の繰り返しフィールドの名前。 |
例
仕入先が商品と在庫の報告に使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、fldPrice という繰り返しフィールドが含まれています。この繰り返しフィールドは、仕入先が販売している各商品のデータを格納する繰り返しグループに含まれています。このグループは、繰り返しテーブル コントロールにバインドされています。
このフォーム テンプレートには、その仕入先が販売しているすべての商品の平均価格を格納するフィールドがあります。平均価格を計算するには、そのフィールドで次の数式を使用します。
avg(fldPrice)
boolean
フィールドまたはグループが存在する場合は true を返します。それ以外の場合は false を返します。
この関数は、フィールドに関連付けられていたコントロールが削除されていても、まだフィールドが存在していれば true を返します。
構文
boolean(field)
引数 |
説明 |
field |
この関数で確認する繰り返しフィールドまたは繰り返しグループ。 |
例
仕入先が商品の在庫情報を報告するために使用するフォーム テンプレートをデザインするとします。 商品情報は、grpProduct という繰り返しグループのさまざまなフィールドに格納されます。各繰り返しグループには、各商品に関する情報を格納するフィールドが含まれています。仕入先が 7 つの商品に関する情報を提供する場合は、フォームに 7 つの繰り返しグループが含まれます。
この繰り返しグループは、繰り返しテーブル コントロールにバインドされています。仕入先は、この繰り返しテーブル コントロールを使用して、新しい商品情報を追加したり既存の商品情報を改訂したりできます。繰り返しテーブルの行を追加することも、削除することもできます。
この繰り返しテーブルのすべての行を削除するとダイアログ ボックスが表示されるようにします。データ ソースにフィールドを追加して、繰り返しテーブル コントロールの行が 1 行でもあれば "true" が格納され、1 行もないと "false" が格納されるようにします。
繰り返しテーブル コントロールでルールを構成して、このフィールドの値が false の場合にダイアログ ボックスが表示されるようにします。繰り返しテーブルに行が含まれているかどうかを自動的に確認するには、"true" または "false" のいずれかの語を格納するフィールドの既定値として次の数式を使用します。
boolean(grpProduct)
ceiling
最も近い整数まで数値を切り上げます。
構文
ceiling(number)
引数 |
説明 |
number |
数値を含むフィールドの名前。 |
例
会社の経費報告書のフォーム テンプレートをデザインするとします。経費は、整数のみを受け取るパラメーターを持つ Web サービスに送信されます。そのため、このパラメーターに渡す経費の金額を整数値に切り上げる必要があります。経費の金額は fldExpenseAmount というフィールドに格納され、切り上げられた整数値はまた別のフィールドに格納されます。切り上げられた整数値を計算するには、そのもう一方のフィールドの既定値として次の数式を使用します。
ceiling(fldExpenseAmount)
このフォーム テンプレートに基づくフォームを作成し、fldExpenseAmount フィールドに「145.87」と入力した場合、上の数式を含むフィールドの値は 146 になります。
eval
フィールドまたはグループの値を返します。2 番目の引数は、フィールドまたはグループに対して計算する式を定義します。eval 関数は、フィールドまたはグループを操作する関数 (sum、avg など) にネストされるのが一般的です。
構文
eval(field, expression)
引数 |
説明 |
field |
2 番目の引数の式で評価される値を含むフィールドまたはグループの名前。 |
expression |
最初の引数に適用する式。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)
引数 |
説明 |
field |
最小値を検索するグループの繰り返しフィールドまたは繰り返しグループのフィールド。 |
例
仕入先が商品の在庫情報を報告するために使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、仕入先の商品に関するデータを格納する複数のフィールドを含む繰り返しグループが含まれています。この繰り返しグループの fldPrice というフィールドには、商品の価格が格納されます。
このフォーム テンプレートのデータ ソースには、その仕入先が販売しているすべての商品の最も高い価格を格納するフィールドもあります。最も高い価格を返すには、そのフィールドで次の数式を使用します。
max(fldPrice)
min
フィールドまたはグループの最小値を返します。
構文
min(field)
引数 |
説明 |
field |
最小値を検索するグループの繰り返しフィールドまたは繰り返しグループのフィールド。 |
例
仕入先が商品の在庫情報を報告するために使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、仕入先の商品に関するデータを格納する複数のフィールドを含む繰り返しグループが含まれています。この繰り返しグループの fldPrice というフィールドには、商品の価格が格納されます。
このフォーム テンプレートのデータ ソースには、その仕入先が販売しているすべての商品の最も低い価格を格納するフィールドもあります。最も低い価格を返すには、そのフィールドで次の数式を使用します。
min(fldPrice)
not
ブール値が false または null の場合に true を返し、true または null 以外の場合に false を返します。
構文
not(boolean_value)
引数 |
説明 |
boolean_value |
ブール型のフィールド。 |
例
請負業者が建築許可を申請するために使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、連絡先情報のセクションと、建築許可関連の情報のセクションがあります。このフォームに入力するときには、連絡先情報セクションの入力を終えてからでないと建築許可セクションの入力を行えないようにします。
そのためには、連絡先情報セクションに空白のフィールドがある場合にブール型のフィールドの値を false に設定するルールを作成します (ブール値フィールドには、true または false のいずれかのブール値を格納できます)。さらに、同じ数式を使用して、ブール型のフィールドの値が false の場合に、建築許可情報を含むセクション コントロールを非表示にします。このルールを設定するには、次の数式を使用してブール型のフィールドを false に設定します。
not(true())
number
値を数値に変換します。
引数の値を数値に変換できない場合は NaN が返されます。
構文
number(value)
引数説明
value数値に変換する値を含むフィールド。
例
請負業者が建築許可を申請するために使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、請負業者が会社の住所を入力できるセクションが含まれています。請負業者が入力した住所は、Web サービスへのデータ接続を使用して、有効な住所かどうか確認されます。住所が確認されると、フォームを SQL データベースに送信できるようになります。SQL データベースでは、番地と町名の両方にテキスト フィールドが使用されています。Web サービスでは、番地は数値データ型、町名はテキスト データ型である必要があります。
Web サービスと SQL データベースの両方にデータを送信するには、住所を 2 種類のデータ型で格納する必要があります。
-
住所を Web サービスに送信するには、番地は数値データ型、町名はテキスト データ型である必要があります。
-
住所を SQL データベースに送信するには、町名と番地の両方がテキスト データ型である必要があります。
また、請負業者が住所を入力するのは 1 回だけで済むようにします。住所を適切なデータ型に変換して、1 回入力すれば済むようにするには、番地を入力するための fldAddressNumber というフィールドと、町名を入力するための別のフィールドをフォーム テンプレートに含めて、両方のフィールドをテキスト データ型として構成します。
番地を Web サービスに送信するには、fldAddressNumber フィールドのデータ (テキスト データ型として格納されています) を数値データ型に変換する必要があります。数値データ型に変換された番地の値は、数値データ型を格納するように構成された別のフィールドに格納します。
番地をテキスト データ型から数値データ型に変換するには、fldAddressNumber フィールドの既定値として次の数式を使用します。
number(fldAddressNumber)
nz
すべての空白フィールドをゼロ (0) に置き換えたフィールドまたはグループを返します。
構文
nz(field)
引数 |
説明 |
field |
値を確認するフィールド。 |
例
仕入先が商品の在庫情報を報告するために入力するフォーム テンプレートをデザインするとします。仕入先は、このフォーム テンプレートに基づくフォームを使用して、商品の在庫情報を Web サービスに送信します。この Web サービスのメソッドでは、数値データを格納するすべての要素に数値が含まれている必要があります。空の数値要素が含まれているフォームは拒否されます。
このフォーム テンプレートには、仕入先の特定の商品の供給能力に相当する数値を格納する fldAvailability というフィールドが含まれています。仕入先は、このフィールドに数値を入力できます。このフォーム テンプレートに基づくフォームを確実に Web サービスに送信できるようにするために、仕入先がこのフィールドに数値を入力しなかった場合にフィールドの値が自動的にゼロに設定されるようにするには、このフィールドの既定値として次の数式を使用します。
nz(fldAvailability)
round
最も近い整数に数値を丸めます。
整数以外の値が、2 つの丸められた整数値のちょうど中間値である場合、戻り値は次に高い整数値になります。
構文
round(number)
引数 |
説明 |
number |
この数式を使用して丸める数値を含むフィールド。 |
例
仕入先が商品の在庫情報を報告するために使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、仕入先の商品に関するデータを格納する複数のフィールドを含む繰り返しグループが含まれています。この繰り返しグループの fldPrice というフィールドには、商品の価格が格納されます。
このフォーム テンプレートには、Web サービスへの送信データ接続があります。この Web サービスのメソッドでは、価格がそれぞれ整数値に丸められている必要があります。この Web サービスのメソッドに適切な値が送信されるようにするには、データ ソースに繰り返しフィールドを追加し、そのフィールドで次の数式を使用して、fldPrice フィールドの価格を整数値に丸めます。
round(fldPrice)
sum
フィールドまたはグループのすべてのフィールドの合計を返します。各フィールドは、最初に数値に変換されます。
構文
sum(field)
引数 |
説明 |
field |
加算する値を含む繰り返しグループのフィールドまたはグループの繰り返しフィールドの名前。2 つの異なるグループのフィールドを足すには、UNION 演算子 (|) を使って引数を区切ります (例: sum(<フィールド名 1> | <フィールド名 2>))。 |
例
経費報告書のフォーム テンプレートをデザインするとします。このフォーム テンプレートには、経費項目を含むグループが含まれています。各項目の金額は、fldExpenseAmount というフィールドに格納されます。このグループは、各経費項目を行として表示する繰り返しテーブルにバインドされています。このフォーム テンプレートには、経費の合計を表示するテキスト ボックス コントロールが含まれています。経費の合計を表示するには、このテキスト ボックス コントロールに次の数式を含めます。
sum(fldExpenseAmount)
true
true を返します。
構文
true()
この関数では引数を使用しません。
例
請負業者が建築許可を申請するために使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、連絡先情報のセクションと、建築許可関連の情報のセクションがあります。このフォームに入力するときには、連絡先情報セクションの入力を終えてからでないと建築許可セクションの入力を行えないようにします。
そのためには、連絡先情報セクションのすべてのフィールドにデータが含まれている場合にブール型のフィールドの値を true に設定するルールを作成します (ブール値フィールドには、true または false のいずれかのブール値を格納できます)。ブール型のフィールドの値が true の場合は、建築許可情報を含むセクション コントロールが表示されます。
建築許可情報を含むセクション コントロールを表示するには、連絡先情報セクションのすべてのフィールドにデータが含まれている場合にブール型のフィールドでこの関数を実行するルールを構成します。
文字列関数
concat
複数のフィールドの文字列を 1 つの文字列に結合します。
構文
concat(text1, text2, ...)
引数 |
説明 |
text1 |
2 番目の引数のテキストと結合して 1 行のテキストにするテキストを含むフィールド。 |
text2, … |
前のフィールドと結合するテキストを含む 1 つ以上の追加のフィールド。各テキスト フィールドをコンマで区切ります。 |
例
fldFirstName というフィールドと fldLastName というフィールドを含むフォーム テンプレートをデザインするとします。3 番目のフィールドに、"This form was filled out by <firstname> <lastname>." というテキストが含まれるようにするには、そのフィールドに次の数式を追加します。
連結 ("このフォームは"、fldFirstName "、" fldLastName ") によって入力されました。
注: 実際のテキストをテキスト引数として入力する場合は、スペースや句読点も含め、引用符 (") で囲む必要があります。
contains
最初のフィールドまたは文字列に 2 番目のフィールドまたは文字列が含まれている場合は true を返します。それ以外の場合は false を返します。
構文
contains(within_text, find_text)
引数 |
説明 |
within_text |
検索するテキストを含むフィールド。 |
find_text |
最初の引数で検索するテキストを含むフィールド、または二重引用符 (") で囲まれたテキスト。 |
例
3 つのテキスト フィールドを含むフォーム テンプレートをデザインするとします。最初のフィールドは fldText という名前で、長いテキストを入力できます。2 番目のフィールドは fldFindText という名前で、短いテキストを入力できます。3 番目のテキスト ボックスでは、2 番目のテキスト ボックスを最初のテキスト ボックスと比較して、2 番目のフィールドの値が最初のフィールドに含まれているかどうかを調べて結果を表示します。そのためには、3 番目のテキスト ボックスの既定値として次の数式を使用します。
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 番目のフィールドの値で始まっているかどうかを調べて結果を表示します。そのためには、3 番目のテキスト ボックスの既定値として次の数式を使用します。
starts-with(fldText, fldFindText)
string
値を文字列に変換します。
構文
string(value)
引数 |
説明 |
value |
テキストに変換する値を含むフィールド。 |
例
請負業者が建築許可を申請するために使用するフォームのフォーム テンプレートをデザインするとします。このフォーム テンプレートには、請負業者が会社の住所を入力できるセクションと、入力された住所が有効かどうかを確認するための Web サービスへのデータ接続があります。住所が確認されると、フォームを SQL データベースに送信できるようになります。SQL データベースでは、住所にテキスト フィールドが使用されています。Web サービスでは、番地は数値データ型、町名はテキスト データ型である必要があります。
Web サービスと SQL データベースの両方にデータを送信するには、住所を 2 種類のデータ型で格納する必要があります。
-
住所を Web サービスに送信するには、番地が数値データ型である必要があります。
-
住所を SQL データベースに送信するには、町名と番地の両方がテキスト データ型である必要があります。
また、請負業者が住所を入力するのは 1 回だけで済むようにします。住所を適切なデータ型に変換して、1 回入力すれば済むようにするには、番地を入力するための fldAddressNumber というフィールドと、町名を入力するための別のフィールドをフォームに含めます。fldAddressNumber フィールドは数値データ型で、町名のフィールドはテキスト データ型です。
SQL データベースに完全な住所 (番地と町名の両方) を送信するには、fldAddressNumber フィールドの値と町名フィールドの値をテキスト データ型の 1 つの値に連結する必要があります。そのためには、まず、データを数値データ型として格納する fldAddressNumber フィールドのデータをテキスト データ型に変換する必要があります。さらに、完全な住所をテキスト データ型として格納するフィールドをデータ ソースに追加します。
fldAddressNumber フィールドの数値データをテキスト データ型に変換して SQL データベースを使用できるようにするには、番地をテキスト データ型として格納するフィールドを構成します。番地を数値データ型からテキスト データ型に変換するには、そのフィールドの既定値として次の数式を使用します。
string(fldAddressNumber)
string-length
文字列に含まれる文字数を返します。
構文
string-length(text)
引数 |
説明 |
text |
値がカウントするテキストであるフィールド。 |
例
テキスト ボックス コントロールにバインドされた fldText というフィールドを含むフォーム テンプレートをデザインするとします。このフォーム テンプレートにはフィールドがもう 1 つ含まれています。この 2 番目のフィールドを使用して、最初のフィールドに入力された文字数をカウントするには、2 番目のフィールドの既定値として次の数式を含めます。
string-length(fldText)
substring
文字列の特定の部分を返します。2 番目の引数で開始位置を指定し、3 番目の引数で文字数を指定します。
構文
substring(text, start_position, char_count)
引数 |
説明 |
text |
テキスト データ型のフィールドまたは二重引用符 (" ") で囲まれたテキスト。この関数は、このテキストを検索し、2 番目の引数で指定された位置から、3 番目の引数で指定された文字数までか、テキストの最後までのいずれかの条件が先に当てはまるまでの、すべての文字を返します。 |
start_position |
最初の引数から取得するテキストの開始位置。この引数は、整数か、整数 (integer) 型を格納するように構成されたフィールドへの参照である必要があります。 |
char_count |
2 番目の引数で指定した開始位置からの、取得する文字数。この引数は、整数か、整数 (integer) 型を格納するように構成されたフィールドへの参照である必要があります。 |
例
次のフィールドとコントロールを含むフォーム テンプレートをデザインするとします。
-
テキスト ボックス コントロールにバインドされた fldText というフィールド。このフィールドには、関数で検索するテキストが含まれます。
-
テキスト ボックス コントロールにバインドされた fldStartingPosition というフィールド。このフィールドは整数型として構成されています。このフィールドには、関数の開始位置が含まれます。
-
テキスト ボックス コントロールにバインドされた fldNumberOfCharacters というフィールド。このフィールドは整数型として構成されています。このフィールドには、関数で取得する文字数が含まれます。
-
関数の結果を表示するテキスト ボックス コントロール。このテキスト ボックス コントロールには、次の数式が含まれます。
substring(fldText, fldStartingPosition, fldNumberOfCharacters)
最初のテキスト ボックスに「This form was created from an InfoPath form template.」、2 番目に「4」、3 番目に「16」と入力した場合、4 番目のテキスト ボックスに含まれる値は "s form was creat" になります。
substring-after
最初の文字列で 2 番目の文字列を検索して、最初に見つかった位置より後のテキストを返します。
構文
substring-after(text, find_text)
引数 |
説明 |
text |
テキスト データ型のフィールドまたは二重引用符 (" ") で囲まれたテキスト。この引数のテキストを検索し、2 番目の引数のテキストの後のすべての文字を返します。 |
find_text |
最初の引数のテキストで検索するテキスト。テキスト データ型のフィールドの値を指定することも、二重引用符 (" ") で囲まれたテキストを指定することもできます。最初の引数のテキストでこのテキストを検索し、この引数のテキストの後のすべての文字を返します。 |
例
次のフィールドとコントロールを含むフォーム テンプレートをデザインするとします。
-
テキスト ボックス コントロールにバインドされた fldText というフィールド。このフィールドには、関数で検索するテキストが含まれます。
-
テキスト ボックス コントロールにバインドされた fldSubstringText というフィールド。このフィールドには、関数の 2 番目の引数であるテキストが含まれます。
-
関数の結果を表示するテキスト ボックス コントロール。このテキスト ボックス コントロールには、次の数式が含まれます。
substring-after(fldText, fldSubstringText)
fldText フィールドに「This form was created from an InfoPath form template.」、2 番目のフィールドに「InfoPath」と入力した場合、3 番目のテキスト ボックス コントロールに含まれる値は "form template" になります。
substring-before
最初の文字列で 2 番目の文字列を検索して、最初に見つかった位置より前のテキストを返します。
構文
substring-before(text, find_text)
引数 |
説明 |
text |
テキスト データ型のフィールドまたは二重引用符 (" ") で囲まれたテキスト。この引数のテキストを検索し、2 番目の引数 (find_text) のテキストより前のすべての文字を返します。 |
find_text |
text 引数で検索する値。テキスト データ型のフィールドの値を指定することも、二重引用符 (" ") で囲まれたテキストを指定することもできます。最初の引数 (text) のテキストでこのテキストを検索し、この引数のテキストの前のすべての文字を返します。 |
例
次のフィールドとコントロールを含むフォーム テンプレートをデザインするとします。
-
テキスト ボックス コントロールにバインドされた fldText というフィールド。このフィールドには、関数で検索するテキストが含まれます。
-
テキスト ボックス コントロールにバインドされた fldSubstringText というフィールド。このフィールドには、関数の 2 番目の引数であるテキストが含まれます。
-
関数の結果を示す Aa テキストボックスコントロール。テキストボックスコントロールには、次の数式が含まれています。
substring-before(fldText, fldSubstringText)
fldText フィールドに「This form was created from an InfoPath form template.」、2 番目のフィールドに「created」と入力した場合、3 番目のテキスト ボックス コントロールに含まれる値は "This form was" になります。
translate
最初の文字列で 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()