Self関数についてまとめてみた
この記事では、 FileMakerのSelf関数について説明します。
Self関数について 何となく分かるものの どことなくモヤっとしていたんですが、 Self関数の使用ケースが全部で6つしかないとのことなので、 1つ1つ調べて まとめてみました。
バージョン:FileMaker Pro 18 Advanced
- Self関数とは?
- Self関数が使える6つのケース
- まとめ
Self関数とは?
自分自身を返す関数
まずSelf関数とは何か? ですが、 文字通り自分自身を返す関数 として・・ どんなときに有効か? どんなときに使えるのか?
もっとも有効なのは、 設定のコピーではないかと考えています。
たとえば、Aというフィールドで 自分自身の値を使いたいとき、
式の中でそのまま"A"と書けばいいのですが、 その場合、 今度別のフィールドBでも使いたいとなったときに、 式をそのまま持っていっても、 "A"の部分を"B"に書き換える必要がでてきてしまいます。
これを"A"ではなく最初から"Self"にしておけば、
式の内容には手を加えず そのままフィールドBで使用しても ちゃんとBを返してくれるようになります。
実際に使ってみます
FileMaker では、 フィールドの値に応じてフィールドの色を変えることができます。
例えば、「単価」の数値が100から500の間なら、フィールドを青くするというのを Self関数を使ってやってみます。
- レイアウトモードにする
- 「書式」メニューから「条件付き...」を選択
- 「値が」を「計算式が」に変更
- 「Self≧100 and Self≦500」と記述(文字列ではなく数値を入れるため、ダブルクォーテーション「"」は削除)
- 「塗りつぶし色」を青に
- 「OK」をクリック
- 「レイアウトの終了」をクリック
さらにこれを、他のフィールドに適用する
「小計」フィールドに持っていってみましょう。
- コピー元の計算式を開きコピー
- コピー先の計算式を開いてペースト
これで「単価」と「小計」で同じ式になりました。 同じ式を使っているが、値が異なっているため、結果も異なります。 値が100から500の間にある「単価」は青くなり、 それから外れている「小計」は青くなりません。
Self関数を使わないとどうなるか・・
「単価」フィールドで、「Self」の部分を「単価」に変えてみましょう。 それを「小計」にコピペします。
すると 「小計」が100から500の間にはないのに青くなっちゃってます。 それは「小計」ではなく「単価」の値を反映しているからです。 「単価」を「小計」に書き替えればSelfを使った場合と同じになりますが めんどくさいですよね。 さらに別のフィールドにも適用する可能性がある場合だと、 ますますSelfを使った方が手間が省けます。
ちなみに、Self関数を再利用する方法はもう一つあります
フィールドを複製し、データ元を変更する方法です
- レイアウトモードで、「編集」メニューで「複製」をしてフィールドを複製
- 「データ」タブ「データを表示」右横の鉛筆ボタンをクリック
- 「フィールド指定」でフィールドを指定
1つのフィールドに対して複数の設定をしてある (「条件付き書式」と「インスペクタオプション」を両方設定しているなど) ならば、 こちらの方が便利です。
Self関数が使える6つのケース
Self関数が使えるのは、 1. 条件付き書式 2. ポップアップヘルプ 3. プレースホルダテキスト 4. インスペクタオプション 5. アクセシビリティインスペクタオプション 6. フィールド定義計算
の全部で6つのケースです。
条件付き書式
条件付き書式とは
条件を設定し、その条件を満たしたときにフィールドの見た目を変えるものです。
変えられるものは、 - フォント - 色 - 太字 - 下線 - フィールドの色(塗りつぶし色)
など
条件付き書式を設定すると、目印として、 レイアウトモードでの表示にしたとき、フィールドの右下隅にカラフルなダイヤのマークが付きます。 マウスカーソルをそのまま置いておくと、式の内容を表示してくれます。
条件付き書式の設定方法
- 「書式」メニューで「条件付き…」を選択
- 表示された「〇〇の条件付き書式」ウィンドウで、「条件」で見た目を変える条件を設定し、「書式」でどう見た目を変えるのかを設定
条件付き書式でのSelf関数の使い方
条件で「計算式が」を選ぶと、自動的に自分のフィールドの値のことをSelfと書かれた式が出来上がっています。 つまり、計算式で自分のフィールドの値を指定するときは、 Self関数を使うのが普通ということです。
別のフィールドに同じ条件を設定したいときでも、 Self関数を使っておけば、 条件式をそのままコピー&ペーストするだけでいいので便利です。
ポップアップヘルプ
ポップアップヘルプとは
フィールドにマウスポインタを合わせて少しそのままにしておくと、浮かぶような形で小さくテキストを表示するものです。
主にヘルプなどの補足情報を表示するのに使用されます。
目印として 「T」のマークが付きます。
ポップアップヘルプの設定方法
- インスペクタの「位置」タブ「位置」セクション
- 「ポップアップヘルプ」の欄に入力するか、右の鉛筆ボタンをクリックして計算式を入力
ポップアップヘルプでのSelf関数の使い方
データの内容に対してフィールドが小さくて 内容をすべて表示しきれないときに、 計算式としてSelfを指定するだけで、 ポップアップヘルプにフィールドの全内容を表示することが可能です。
プレースホルダテキスト
プレースホルダテキストとは
データがまだ入力されていないフィールドに、テキストを薄く表示させることができます。
主に - 何のフィールドなのか - 何を入力すればいいのか
といった、データ入力時のヒントをユーザに知らせるために使用することができます。
データを入力すると消えます。
目印として 「…」のマークが付きます。
プレースホルダテキストの設定方法
- インスペクタの「データ」タブ「フィールド」セクション
- 「プレースホルダテキスト」の欄に入力するか、右の鉛筆ボタンをクリックして計算式を入力
プレースホルダテキストでのSelf関数の使い方
自分のフィールド名を表示させたい場合に、 「GetFieldName( Self )」と入力すると、 フィールド名をいちいち手入力することなく 表示させることができます。
- フィールド名がそのままラベル・ヒントとなる場合
- 特にレイアウト上フィールドラベルを入れるスペースがない場合
に有効です。
インスペクタオプション
インスペクタオプションとは
フィールドを隠すことができます。
条件を設定し、その条件を満たすとフィールドが消えます。
フィールドが消えると、値を入力することはできなくなります。
目印として 目のマークが付きます。
インスペクタオプションの設定方法
- インスペクタの「データ」タブ「動作」セクション
- 「次の場合にオブジェクトを隠す」欄に入力するか、右の鉛筆ボタンをクリックして計算式を入力
インスペクタオプションでのSelf関数の使い方
ただ数値を入力するだけだと、「入力した数値が0で表示、0以外で非表示」となるだけなので、 フィールドの値を条件として設定するには、Self関数を使って設定してやる必要があります。
アクセシビリティインスペクタオプション
アクセシビリティインスペクタオプションとは
画面を読み上げる機能です。
目が不自由な方でも操作を可能とするものです。
今カーソルがどこにあるか、そこが何のフィールドかを読み上げてくれます。
アクセシビリティインスペクタオプションの設定方法
アクセシビリティインスペクタオプションでのSelf関数の使い方
詳しく設定せずにただ有効にしただけでは、フィールドの中身は読み上げてくれますが、 フィールドのことを「テキストフィールド」と言うのみで、何のフィールドかは分かりません。
そこでSelf関数を用いて設定することで、フィールド名も読み上げさせることができます。
フィールド定義計算
フィールド定義計算とは
- 入力値の自動化
- あらかじめデータを自動で入力してくれるよう設定できます。
- それによって入力の手間を省くことができます。
- 入力値の制限
- 間違った値・条件に合わない値を入力した場合に、ダイアログを表示させ入力者に注意を促すことができます。
フィールド定義計算の設定方法
- 「ファイル」メニューで「管理」から「データベース...」を選択
- 表示された「〇〇のデータベースの管理」ウィンドウで、「フィールド」タブを選択
- 該当のフィールドをダブルクリック
- 表示された「フィールド〇〇のオプション」ウィンドウで、「入力値の自動化」タブ、または「入力値の制限」タブを選択
フィールド定義計算でのSelf関数の使い方
- 入力値の自動化
- 「計算値」でSelf関数を使用可能です。
- 入力された値を、式に従って強制的に書き換えることができます。
- 間違った値が入力された場合に、強制的に修正することができます。
- 入力値の制限
- 「計算式で制限」でSelf関数を使用可能です。
- 自分自身を計算式の中で表す時にSelf関数を使用できます。
まとめ
以上、Self関数についてまとめてみました
使用シーンを一つ一つ見ていったことで 自分の頭の中も 整理できたように思えます。
今のところ書式のコピー&ペーストやスタイルでは 計算式までは反映されませんが、 それができればもっと便利に使えると思います。