ある条件によって動作を分けたい場合があるとします。例えば、FileMakerのファイルを開く時、サインインするユーザーによって表示するレイアウトを指定するなどです。
これを実現するには、論理関数である「If関数」を使用します。
2通りあるIf関数の使い方
If関数を使う時は、大きく2通りの使い方があります。
一つ目は、スクリプトの中で分岐条件を指定する方法です。あるスクリプトを作成し実行したタイミングで、その時の条件に応じてスクリプトの動作を分けることができます。
二つ目は、フィールドの値に計算を組み込み、その中でIf関数による条件を指定します。
あるフィールドの値が「A」であれば、このフィールドには「B」を入れる、それ以外は「C」を入れる。
というような使い方ができます。
スクリプトのなかに「If関数」を使用する
今回は、ファイルを開いた時にスクリプトが実行されるとして、スクリプトを作成していきます。ファイルを開いた時に指定したスクリプトを実行する機能は、「OnFirstWindowOpen」というスクリプトトリガを利用します。
作成するスクリプトですが、アカウント名によって「ツールバー」を表示または非表示にするスクリプトを作成したいと思います。
ツールバーとは、FileMakerの上部にある各ボタンのある部位のことを指します。FileMaker標準のツールバーは、FileMakerに慣れた方にとっては使いやすいものです。しかし、そうではない方がデータベースを利用する際は、不用意にレコードを削除してしまったりする可能性もあるので、場合によっては非表示に設定することもできます。
スクリプトの設定ですが、ステップの中から「制御」→「If」をダブルクリックします。
次に、「fx」のボタンをクリックします。
「計算式の指定」という画面が表示されます。右側から「取得」を開いて、「Get (アカウント名)」をダブルクリックします。
すると、計算式に「Get (アカウント名)」の計算式が挿入されます。
Get (アカウント名)に続いて、「= “admin”」を追加します。つまり、「Get ( アカウント名 ) = “admin”」となります。これは、現在ログインしているアカウント名が「admin」であったら、を意味します。
「=(イコール)」はそのままでよいのですが、アカウント名のようなテキストを計算式に入れる場合は、「”(ダブルクォーテーション)」で囲む約束になっています。
これらの記号は、計算式の画面上から簡単に選択できるようになっています。
計算式を入力したら「OK」をクリックします。
アカウント名が「admin」であったらツールバーを表示させたいので、ステップのなかの「ウインドウ」→「ツールバーの表示切り替え」をダブルクリックします。
すると、先ほど設定したIf関数の下に「ツールバーの表示切り替え」が入ります。
上のスクリーンショットでは、「ツールバーの表示切り替え」のオプションが「切り替え」になっていますが、「表示する」に変えます。つまり、アカウント名が「admin」であったらツールバーを表示する、という指定になります。
スクリプトステップの中のIfは、条件が当てはまらなければスキップされます。つまり、アカウント名が「admin」であった場合は、ツールバーの表示切り替えが実行されます。「admin」でなく「ゲストアカウント」などでログインした場合は、ツールバーの表示切り替えはスキップされます。
つぎに「制御」→「Eles」を選択します。
「Eles」は、直前の「If」が該当しなければ次の「If」ステップに進むという意味になります。
「Eles」の下に、もう一度「If」を挿入します。
この「If」計算式には、
Get ( アカウント名 ) ≠ “admin”
を設定します。「=」ではなく「≠」になります。これは、アカウント名が「admin」ではない場合を指します。
2つめの「If」の下に、もう一度「ツールバーの表示切り替え」を挿入し、オプションで「隠す」にします。
もし「admin」以外のアカウントでログインした場合は、「ツールバーを隠す」という設定になります。
「If」を使用した場合、必ず最後に「End If」を入れる約束になっています。今回は、「If」を2箇所使用しましたので、最後に「End If」が2個入っていることを確認します。
これで完成です。
このスクリプトは、ログイン中のアカウント名が「admin」であったらツールバーを表示して終わります。「admin」以外であったら、ツールバーを隠します。
アカウントは、FileMakerのファイルを開く時に決定しますので、ファイルを開くと同時にこのスクリプトが実行されるように設定します。
メニューから「ファイル」→「ファイルオプション」を選択します。
「次のアカウントを使用してログイン」のチェックを外します。
「スクリプトトリガ」を開いて、「OnFirstWindowOpen」にチェックを入れ、作成したスクリプトを設定します。
これでファイルを開いた際に、アカウントを求められます。サインイン後に、先ほど作成したスクリプトが作動します。
ゲストアカウントでサインインするには、「ゲストとしてサインイン」を選択します。
「ゲストとしてサインイン」を選択すると、ツールバーが表示されません。
「admin」でサインインすると、ツールバーが表示されます。
「もしもアカウントが〜であったらこうする」というIf関数の使い方でした。
もちろんアイディア次第で、他にもたくさんあるスクリプトステップを入れ込んで、If関数によるカスタム機能をつけることができます。
ボタンにIf関数を入れ込んだスクリプトを設定しておくと、アカウントによってレイアウトを変更するなどの機能をつけることもできます。
このように、作る人によってカスタマイズできるのがFileMakerの便利なところです。
計算式のなかで「If関数」を使用する
フィールドを作成する際に、フィールドタイプで「計算」というものがあります。
この計算式の中に、If関数を使用することができます。
例えば、このフィールドには、
If ( 状態 = “未” ; “未実施” ; “実施済”)
という計算式が設定してあります。
「状態」というのは、フィールド名のことです。「状態」というフィールドに「未」というテキストデータが入っていたら、というのが、
状態 = “未”
になります。次に続くセミコロン(;)のあとにある結果が、入力されます。
「状態」というフィールドに「未」というデータが入っていたら、この計算式を設定したフィールドには「未実施」と入力されるのが以下の青字の部分です。
状態 = “未”;”未実施”
続いて、「状態」というフィールドに「未」というデータ以外のデータが入力されていたら、この計算式を設定したフィールドに「実施済」というデータを自動的に入力したいとします。それが以下の赤字の部分です。
状態 = “未”;”未実施”;”実施済”
計算式上の構文では、
If(状態 = “未”;”未実施”;”実施済”)
となります。この構文を基に整理すると、
- 「状態」というのは、フィールド名を指します。
- このフィールドの値が「未」であったら、この計算式を設定しているフィールドに「未実施」が自動的に入力されます。
- このフィールドの値が「未」以外であったら、この計算式を設定しているフィールドに「実施済」が自動的に入力されます。
まとめ
「If関数」で行えることは、AがBであればC、AがB以外であればDのような形になります。
- AフィールドがBであれば、このフィールドにはCを入力
- AフィールドがBでなければ(B以外であれば)、このフィールドにはDを入力
つまり2パターンの論理しか組み込めないのです。
用途によっては問題ないのですが、パターンが3種類以上である場合には、「If関数」は適していません。
3種類以上のパターンがある場合は、「Case関数」を使用します。「Case関数」については、Case関数を活用したフィールド値による値の変更をご参照ください。