ファイルメーカー(FileMaker) 論理関数

論理関数 説明
Case(条件1,結果2,条件2,結果2…..,デフォルト値) 複数の条件式により結果を分岐
引数
条件 – テキストまたは数値式
結果 – 式に対応する結果
中カッコ { } 内の引数はオプションです。
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
一連の <条件> を元に可能な <結果> の1つを返します。
Case 関数はそれぞれの式を順に評価し、真の式が見つかった場合にその式の <結果> に指定されている値を返します。
引数リストの最後にデフォルト値を含めることができます。真と評価される式がない場合、Case 関数は <デフォルト値> に指定されている値を返します。デフォルト値が入力されていない場合、Case 関数は「空」の結果を返します。

Case ( 点数 >= 90 ; “優" ; 点数 > 50 ; “可" ; “不可" ) は、点数が 90 点以上の場合は「優」、51 点から 89 点までの場合は「可」、その他の場合は「不可」と表示します。
Case ( 輸送方法 = “トラック便" ; 2 ; 輸送方法 = “航空便" ; 10 ) は、「輸送方法」フィールドの値が「航空便」の場合、「10」を返します。
Choose(条件式,結果が0の場合,結果が1の場合…..) 条件式の結果数値により結果を分岐
引数
条件 – 任意の整数計算式。計算結果として、後続のリストのどの値を返すかを指定するインデックスを求める式。最初の結果引数は、0番目の戻り値となるため、最初の引数を結果として返すためには、この式の値は0でなければなりません。
結果 – 1つ以上の結果
中カッコ { } 内の引数はオプションです。
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
<条件> の整数値に従って、1つの <結果> の値を返します。FileMaker Pro は、<条件> を評価してインデックス番号を生成し、この番号を使用して、対応する順序の結果を選択します。
Choose 関数の結果引数リストは0番目から始まるため、リストの最初の項目はインデックス0、次の項目はインデックス1となります。たとえば、条件が2に評価されると、「結果2」が選択されます。

Choose ( 評価 ; “該当なし" ; “良" ; “可" ; “不可" )
「評価」は空欄または 1 から 3 までの数字フィールドです。このフィールドが空欄の場合、Choose 関数は何も返しません。「評価」が 1 の場合、結果は「良」になります。「評価」が 2 の場合は「可」、3 の場合は「不可」になります。
Evaluate(式;{[フィールド1;フィールド2…]}) 引数を式とみなして計算
引数
式 – テキスト式またはテキストフィールド
フィールド – この関数が依存するフィールドの一覧。これらのフィールドが変更されると、計算式によって結果が更新されます。
中カッコ { } 内の引数はオプションです。オプションのフィールドリストは、角カッコ([ ])で囲まれています。
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
<式> を計算として評価します。
オプションの <フィールド< 引数には、この計算が依存するフィールドの一覧を指定します。必要なフィールドの一覧が記述されていない場合、依存するフィールドを変更しても計算結果は更新されません。

テキストフィールドの値が「2 + 2」の場合、Evaluate ( テキストフィールド ) は「4」を返します。
テキストフィールドの値が「2 + 2」の場合、Evaluate ( “テキストフィールド" ) は「2 + 2」を返します。
テキストフィールドの値が「2 + 2」の場合、Evaluate ( GetField ( “テキストフィールド" ) ) は「4 」を返します。
テキストフィールドの値が「.08 * 金額」、「金額」フィールドの値が「10.00」の場合、Evaluate ( テキストフィールド ; [金額] ) は「.80」を返します。
「税率の計算」フィールドの値が「小計 * 税率」で、「小計」フィールドが「10.00」が含まれる数字フィールドの場合、Evaluate ( “Let ( 税率 = .05 ; “& 税率の計算 &" )" ) は、「.50」を返します。
次の例は、変数「a」のみにアクセスし、Evaluate、Let、および Get ( スクリプト引数 ) 関数を使用して、指定した引数を渡す方法を示します。(この例では、「6」が返されます)。
スクリプト引数 = “a = 5; b = 10"
Evaluate ( “Let ( [" & Get ( スクリプト引数 ) & “] ; a + 1 )" )
次の例は、「a」および「b」の両方の変数にアクセスして、指定された引数を渡す方法を示します。最初の引数が簡単な分、2番目の引数はより複雑になります(この例では、「6, 12」が返されます)。
スクリプト引数 = “a = 5; b = 10"
Evaluate ( “Let ( [" & Get ( スクリプト引数 ) & “] ; a + 1 & \",
\" & $b + 2 )" )
次の例は、Let 関数の2番目の構文をチェックできるようにしつつ、指定した引数を渡す方法を示します(この例では、「6, 12」が返されます)。
スクリプト引数 = “a = 5; b = 10"
Let( [a = Evaluate(“Let( [" & Get(スクリプト引数) & “]; a )"),
b = Evaluate ( “Let ( [" & Get ( スクリプト引数 ) & “] ; b
)" ) ] ; a + 1 & “, " & b + 2 )
注意 Evaluate 関数は、式(計算式として評価されるフィールド値を含む)を評価します。また、フィールドの依存関係を指定して、同じレコードの他のフィールドでの変更に基づいて、評価関数を使用する計算を開始することもできます。この関数は、ユーザ定義の式を評価します。たとえば、次のように、州税を計算する式を「合計」フィールド内に作成することができます。
Evaluate ( 州税の計算式 ) + 輸送費
「州税の計算式」フィールドには、次のテキストが含まれています。
小計 * 1.0875
「小計」フィールドには、税金および輸送費を加える前の小計が含まれています。
Evaluate 関数には、オプションとして2番目の引数があり、ここに計算の基準となるフィールドを指定します。依存するフィールドの内容が変更されると、計算式が再評価されます。次の例では、「小計」が変更されると、「合計」が再計算されます。
EvaluationError(テキスト) 計算式のエラーをコードで返す
引数
式 – 計算式
戻り値のデータタイプ
数字
説明
<式> からのエラーコードを返します。エラーには、構文エラーとランタイムエラーの2種類があります。構文エラーは、計算が無効であることを示します。ランタイムエラーは、フィールドが見つからなかったり、レコードが見つからなかったりした場合のエラーで、現在実行されている計算式は有効であるものの、正しく実行できないときに発生します。エラーコードおよびメッセージの一覧については、Get ( 最終エラー ) 関数を参照してください。
注意 構文エラーを返すには、Evaluate 関数を EvaluationError 関数で囲む必要があります。

「計算式フィールド」に「合計 + 1」が含まれ、「合計」フィールドが削除されているか、名前が変更されている場合、EvaluationError ( Evaluate ( 計算式フィールド ))は「102」(フィールドが見つかりません)を返します。
「計算式フィールド」に閉じカッコのない「abs ( -1」が含まれている場合、EvaluationError ( Evaluate ( 計算式フィールド ) ) は「1207」(カッコが一致していません)を返します。
Evaluate ( 州税の計算式 ; 小計 ) + 輸送費
依存する引数は、他の場合にも役立つことがあります。次に例を示します。
Evaluate ( “Get ( タイムスタンプ )" ; [フィールドB ; フィールドC] )
フィールドB またはフィールドC が変更されるたびに、計算フィールドにタイムスタンプを保存します。
GetAsBoolean ( データ ) 引数
データ – 任意のテキスト、数字、日付、時刻、タイムスタンプ、またはオブジェクトの式、あるいはテキスト、数字、日付、時刻、タイムスタンプ、またはオブジェクトを含むフィールド
戻り値のデータタイプ
数字
説明
<データ> の値が0またはデータが空である場合は「0」を、そうでない場合は「1」を返します。

GetAsBoolean ( “" ) は「0」を返します。
GetAsBoolean ( “何らかのテキストがあります。" ) は「0」を返します。
GetAsBoolean ( オブジェクトフィールド ) は、オブジェクトフィールドという名前のフィールドにデータがある場合は「1」を、オブジェクトフィールドが空である場合は「0」を返します。
GetField(フィールド名) 指定フィールドの内容を読み出し
引数
フィールド名 – テキスト式、またはフィールドの名前を参照するテキストフィールド
重要 テキスト引数の詳細については、デザイン関数を参照してください。
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
<フィールド名> の内容を返します。この関数は、<フィールド名> の内容を取得するために使用したり、フィールドを使用する関数(NPV、GetSummary、GetRepetition など)や、統計関数で使用します。

「矢」および「的」というフィールドがあるとします。「矢」フィールドにはテキスト文字列「的」が含まれ、「的」フィールドにはテキスト文字列「標的」が含まれています。
GetField ( “矢" ) は、「的」を返します。テキスト文字列が <フィールド名> 引数であることを示すために、「矢」をダブルダブルクォーテーションで囲むことに注意してください。
GetField ( 矢 ) は、「標的」を返します。「矢」フィールドに含まれる値が <フィールド名> 引数であることを示すために、「矢」をダブルクォーテーションマークで囲まないことに注意してください。
「姓」および「名」というフィールドがあるとします。「名」フィールドにはテキスト文字列「一郎」が含まれ、「姓」フィールドにはテキスト文字列「田中」が含まれています。
GetField ( “姓" ) & " " & GetField ( “名" ) は、テキスト文字列「田中一郎」を返します。
GetSummary ( GetField ( “フィールド1" ) , GetField ( “フィールド" & “2" ) ) は、「フィールド2」を区分けフィールドとして使用して、集計フィールド「フィールド1」に対して集計を実行します。
GetNthRecord ( フィールド名 ; レコード番号 ) 引数
フィールド名 – 任意の関連フィールド、繰り返しフィールド、繰り返しフィールドまたは関連フィールドを返す式
レコード番号 – データを必要とするレコード番号
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
与えられたレコード番号からのフィールド名の内容を返します。
注意 GetNthRecord () の結果は、GetNthRecord () により参照されているレコードが、現在計算式が評価されているレコード以外である場合には更新されません。

GetNthRecord ( 名 ; 2 ) は、現在のテーブルのレコード2の「名」フィールドの内容を返します。
GetNthRecord ( 名 ; Get ( レコード番号 ) + 1 ) は、現在のテーブルの次のレコードの「名」フィールドの内容を返します。
GetNthRecord ( 連絡先 :: 名 ; 2 ) は、「連絡先」テーブルのレコード2の「名」フィールドの内容を返します。
GetNthRecord ( 連絡先 :: 繰り返し[2]; 2 ) は、「連絡先」テーブルのレコード2の「繰り返し」フィールドの2番目の繰り返しの内容を返します。
If(条件式,式が成立する場合,式が成立しない場合) 条件式の結果により返す値を変える
引数
条件式 – 数値または論理式
結果1 – 式またはフィールド名
結果2 – 式またはフィールド名
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
<条件式> の値に応じて、2つの可能な値のうちの1つを返します。<条件式> の評価結果が真(0 以外の数値)の場合、<結果1> に指定された値が返されます。<条件式> の評価結果が偽(0)の場合は、<結果2> に指定された値が返されます。<条件式> には、数値または論理値(真、偽)の結果を返す式を使用する必要があります。
注意
可能な結果が複数ある場合は、Case 関数の使用をお勧めします。
デフォルトでは、<条件式> が値を含まないフィールドを参照している場合、If 関数は空欄の結果を返します。この設定を無視して値が返されるように設定したい場合は、[式内の全フィールドの値が空欄の時、計算しない] チェックボックスの選択を解除してください。

If ( 国 = “米国" ; “米国テクニカルサポート" ; “国際テクニカルサポート" ) は、「国」フィールドの値が「フランス」または「日本」の場合、「国際テクニカルサポート」を返します。「国」フィールドの値が「米国」の場合は、「米国テクニカルサポート」を返します。
If ( 州 = “CA" ; 小計 * CA 税率 ; 0 ) は、購入者がカリフォルニアの住人の場合は税金の額を、それ以外の場合は「0」を返します。
IsEmpty(フィールド) 空かどうか判定
引数
フィールド – 任意のフィールド名、テキスト式、または数値式
戻り値のデータタイプ
数字
説明
<フィールド> が空欄の場合、関連フィールド、関連テーブル、リレーションシップ、またはファイルが見つからない場合、あるいは他のエラーが生じた場合は真(1)を返します。それ以外の場合は偽(0)を返します。

IsEmpty ( 注文番号 ) は、「注文番号」フィールドが空欄の場合、「1」を返します。
If ( IsEmpty ( 姓 ) ; “無効なレコード" ; “" ) は、「姓」フィールドが空欄の場合は「無効なレコード」と表示しますが、データが入力されている場合は何も表示しません。
IsEmpty ( 支払い額::支払い日 ) は、たとえば、「支払い額」テーブルが移動されたり、名前が変更された場合、「1」を返します。
IsEmpty ( “テキスト" ) は、「0」を返します。
IsValid(フィールド) 有効な値が入力されているか判定
引数
フィールド – 任意のフィールド名
戻り値のデータタイプ
数字
説明
次のような場合に偽(0)を返します。
日付フィールドにテキストが入力されているなど、データタイプが一致しないため、レコードに無効な値が含まれている
参照先のフィールドが定義されている関連テーブルを特定できない状態になっている(一時的な場合も含む)
フィールドが関連テーブルから削除されたため、親テーブルからそのフィールドへの参照が無効になっている
その他の場合は、「1」(データが有効)を返します。

IsValid ( 日付フィールド ) は、たとえばテキストがインポートされているなど、「日付フィールド」に日付以外のデータがある場合、「0」を返します。
IsValid ( 金額 ) は、数字フィールド「金額」にテキストしかない場合、「0」を返します。
IsValid ( テーブル::フィールド ) は、関連テーブルの名前が変更されたり、リレーションシップが新しいファイル名に更新されていない場合、「0」を返します。
IsValidExpression(式) 計算式のエラー評価
引数
式 – 計算式
戻り値のデータタイプ
数字
説明
<式> の構文が正しい場合、真(1)を返します。<式> に構文エラーがある場合、偽(0)を返します。

IsValidExpression ( 計算式フィールド ) は、「計算式フィールド」に「合計 + 1」が含まれる場合、「1」(真)を返します。
「計算式フィールド」に閉じカッコのない「abs ( -1 」が入力されている場合、IsValidExpression ( 計算式フィールド ) は「0」(偽)を返します。
Let({[}変数=式1{;変数2=式2…]};計算式) 変数の定義
引数
式 = 任意の計算式、フィールド、または定数
計算 = 任意の計算式、フィールド、または定数
中カッコ { } 内の引数はオプションです。
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
<計算式> の実行中に、<式X> の結果を <変数X> に設定します。角カッコ([ ])で囲んでセミコロンで区切ったリスト構文を使用すると、複数の変数を使用することができます。次に例を示します。
Let ( [変数 = 値; 変数2 = 値2]; 計算 )
$ 記号はローカル変数を、$$ 記号はグローバル変数を参照します。繰り返し数(任意)は変数名の直後の角括弧 [ ] に表示します。次に例を示します。
Let ( [$変数[繰り返し] = 値; $$変数2 = 値2]{; 計算} )
Let 関数は、左から右に変数を設定します。以前定義した変数(たとえば、[変数を設定] スクリプトステップで定義した変数)を使用して新しい変数値を定義したり、Let 関数を別の Let 関数の中にネストしたりすることができます。以前定義された変数をネストされた Let 関数の内部で使用する場合、その変数の有効範囲はネストされた関数の内部に限られます(完全に固有の変数を定義した場合と同様です)。次の「都市」の例を参照してください。
定義した後、ローカルおよびグローバル変数は、その有効範囲内の計算式で参照できます。グローバル変数の有効範囲は、現在のファイルに制限されています。ローカル変数の有効範囲は、現在のスクリプトです。計算式で定義されるローカル変数の有効範囲はファイルですが、スクリプトが実行されていない場合にのみ利用できます。ローカルおよびグローバル変数(または異なるスクリプトの2つのローカル変数)には同じ名前を付けられますが、異なる変数として扱われ、別々の値を保存します。

Let ( x = 5 ; x * x ) は、「25」を返します。
Let ( [x = 5 ; squared = x * x ; cubed = squared * x] ; cubed ) は、「125」を返します。
Let ( City = “パリ" ; Let ( City = “サンフランシスコ" ; City & “-" ) & City ) は、「サンフランシスコ-パリ」を返します。
次の例は、ローカル変数カウンタを、繰り返し数 50、値 120 で設定します。
Let ( $カウンタ[50] = 120; $カウンタ[50]*2 ) は「240」を返します。
次の例は、変数「a」のみにアクセスし、Evaluate、Let、および Get ( スクリプト引数 ) 関数を使用して、指定した引数を渡す方法を示します。(この例では、「6」が返されます)。
スクリプト引数 = “a = 5; b = 10"
Evaluate ( “Let ( [" & Get ( スクリプト引数 ) & “] ; a + 1 )" )
次の例は、「a」および「b」の両方の変数にアクセスして、指定された引数を渡す方法を示します。最初の引数が簡単な分、2番目の引数はより複雑になります(この例では、「6, 12」が返されます)。
スクリプト引数 = “a = 5; b = 10"
Evaluate ( “Let ( [" & Get ( スクリプト引数 ) & “] ; a + 1 & \",
\" & b + 2 )" )
次の例は、Let 関数の2番目の構文をチェックできるようにしつつ、指定した引数を渡す方法を示します(この例では、「6, 12」が返されます)。
スクリプト引数 = “a = 5; b = 10"
Let ( [a = Evaluate ( “Let ( [" & Get ( スクリプト引数 ) & “] ; a )" ),
b = Evaluate ( “Let ( [" & Get ( スクリプト引数 ) & “] ; b )"
)] ; a + 1 & “, " & b + 2 )
Lookup(ソースフィールド{;エラー時の値} 元データをルックアップで読み出す
引数
ソースフィールド – ルックアップ値の取得元のフィールド
エラー時の式 – 任意の式
中カッコ { } 内の引数はオプションです。
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
リレーションシップグラフのリレーションシップを使用して、<ソースフィールド> の内容を返します。ルックアップに失敗した場合は、オプションの <エラー時の式> の結果が返されます。この関数を使用してソースフィールドの内容にアクセスするには、ソースフィールドが含まれるテーブルと計算フィールドが関連している必要があります。Lookup 関数を使用する計算式が、強制的に非保存計算となることはありません。

あるデータベースファイルに、「従業員」と「所属」という2つのテーブルがあり、次のデータが含まれています。
「従業員」テーブル
所属 ID
従業員
100
鈴木良太
200
橋本秀樹
300
木村里香
「所属」テーブル
所属 ID
所属名
コード
100
Apple
91234
100
Apple
82345
200
FileMaker
95054
「従業員」テーブルと「所属」テーブルは、数字フィールド「所属 ID」を使用して関連しています。「従業員」テーブルで定義されている計算式「所属名 = Lookup ( 所属::所属名 ; “見つかりません" )」は、最初のレコードに対しては「Apple」、2番目のレコードに対しては「FileMaker」、3番目のレコードに対しては「見つかりません」を返します。
LookupNext(ソースフィールド;前方/後方フラグ) 元データをルックアップで読み出す
引数
ソースフィールド – ルックアップ値の取得元のフィールド
後方/前方フラグ – ルックアップが失敗した場合に、次に小さい/大きい値で一致するレコードの値を使用するかどうかを指定するキーワード
戻り値のデータタイプ
テキスト、数字、日付、時刻、タイムスタンプ、オブジェクト
説明
リレーションシップグラフのリレーションシップを使用して、<ソースフィールド> の内容を返します。ルックアップに失敗した場合は、<後方/前方フラグ> の指定に従って、次に小さい/大きい値で一致するレコードのソースフィールドの値が返されます。この関数を使用してソースフィールドの値にアクセスするには、ソースフィールドが含まれるテーブルと計算フィールドが関連している必要があります。LookupNext 関数を使用する計算式が、強制的に非保存計算となることはありません。

あるデータベースファイルに「従業員」と「所属」という2つのテーブルがあり、次のデータが含まれています。
「従業員」テーブル
所属 ID
従業員
100
鈴木良太
200
橋本秀樹
300
木村里香
377
田中真理
「所属」テーブル
所属 ID
所属名
コード
100
Apple
91234
100
Apple
82345
200
FileMaker
95054
300
Motorola
93456
400
Cisco
88123
「従業員」テーブルと「所属」テーブルは、数字フィールド「所属 ID」を使用して関連しています。「従業員」テーブルの「所属名」フィールドで定義されている計算式「LookupNext ( 所属::所属 ; 後方 )」 は、1から4のレコードに対して、「Apple」、「FileMaker」、「Motorola」、および「Cisco」をそれぞれ返します。
Quote(テキスト) 特殊記号を変換
引数
テキスト – 任意のテキスト式またはフィールド
戻り値のデータタイプ
テキスト
説明
<テキスト> を、ダブルクォーテーションマークで囲んだテキスト形式で返します。<テキスト> 内の特殊文字は、適切にエスケープされます。この関数を使用して、テキストが Evaluate 関数によって評価されないように保護することができます。

Quote ( “hello" ) は、「"hello"」を返します。
Quote( “abc\¶" ) は、「"abc\¶"」を返します。
Quote ( “say \"hello\" fred" ) は、「"say\"hello\"fred"」を返します。
Evaluate ( Quote ( “1 + 2" ) ) は、「1 + 2」を返します。
Evaluate ( “+2 + 2" & Quote ( “- 1 + 2" ) ) は、「3 – 1 + 2」を返します。