このページのもくじ
氏名や会社名の後に自動的に敬称がつくようにしたい!
ファイルメーカーで住所録をつくっています。今回は、ハガキや封筒に宛名をプリントする際に、自動で敬称がつくようにする方法を考えてみました。
住所録データベースには、氏名や会社名のフィールドはすでに用意してありますので、会社名フィールドに社名が入力されていれば「御中」、氏名フィールドに名前が入力されていれば「様」が自動的にプリントされるようになれば、便利ですよね。
はじめは、それぞれに「敬称フィールド」をつくって、すべてのレコードで敬称の有無を選んで設定していました。
はぁ〜、めんどくさ〜い!!
で、今回はスクリプトを使ってもっと効率よく処理してみました。
敬称をつける方法
やりたい処理は、
会社名フィールドに入力されていれば「御中」を追加する、空欄ならばなにもしない
ということ。
なので、会社名フィールドが空欄かどうかを調べて、その結果で処理を振り分けてやるとできそうです。まとめると、下のようになります。
1)フィールドが空欄かどうかチェックする
2)結果によって処理を変える
・空欄:なにもしない
・入力あり:「御中」という文字を追加する
該当しそうな関数を調べてみると…
1)フィールドが空欄かどうかチェックする
論理関数・IsEmpty
2)結果によって処理を変える
・空欄:なにもしない
・入力あり:「御中」という文字を追加する
論理関数・If
この2つの関数が使えそうです。
今回使用する関数ついて
IsEmpty
フィールドが空欄の場合、または他のエラーが発生した場合は真 (1) を返します。それ以外の場合は偽 (0) を返します。
構文 | IsEmpty ( フィールド ) |
引数 | フィールド – 任意のフィールド名、テキスト式、または数値式 |
例 |
IsEmpty ( 注文番号 ) は、「注文番号」フィールドが空欄の場合、「1」を返します。
If ( IsEmpty ( 姓 ) ; “無効なレコード” ; “” ) は、「姓」フィールドが空欄の場合は「無効なレコード」と表示しますが、データが入力されている場合は何も表示しません。
IsEmpty ( 支払い額::支払い日 ) は、たとえば、「支払い額」テーブルが移動されたり、名前が変更された場合、「1」を返します。
IsEmpty ( “テキスト” ) は、「0」を返します。
|
If
条件式の値に応じて、結果 1 または結果 2 のうちの 1 つを返します。
構文 | If (条件式 ; 結果1 {; 結果2} ) |
引数 |
条件式 – 数値または論理式
結果 1 – 式またはフィールド名
結果2 – 式またはフィールド名
中カッコ { } 内の引数はオプションです。
|
説明 |
条件式の評価結果が真 (0 以外の数字) の場合、FileMaker Pro では、結果 1 が返されます。条件式の評価結果が偽 (0) の場合は、結果2 に指定された値が返されます。条件式の評価結果が偽で、結果2 が入力されていない場合、If は空の結果を返します。条件式には、数値または論理値(真、偽) の結果を返す式を使用する必要があります。 •可能な結果が複数ある場合は、Case 関数の使用をお勧めします。
•デフォルトでは、条件式 が値を含まないフィールドを参照している場合、If 関数は空欄の結果を返します。この設定を無視して値が返されるように設定したい場合は、[すべての参照フィールドが空の場合は評価しない] チェックボックスの選択を解除してください。
|
例 |
If ( 国 = “米国” ; “米国テクニカルサポート” ; “国際テクニカルサポート” ) は、「国」フィールドの値が「フランス」または「日本」の場合、「国際テクニカルサポート」を返します。
「国」フィールドの値が「米国」の場合は、「米国テクニカルサポート」を返します。
If ( 州 = “CA” ; 小計 * CA 税率 ; 0 ) は、購入者がカリフォルニアの住人の場合は税金の額を、それ以外の場合は「0」を返します。
|
参照「ファイルメーカー16/関数リファレンス」:https://fmhelp.filemaker.com/help/16/fmp/ja/index.html#page/FMP_Help%2Fif-function.html%23
スクリプト
作ったスクリプトがこれです。
#会社名に敬称をつける 変数を設定 [ $on ; 値:"御中" ] If [ not IsEmpty (テーブル::会社名 ) ] 計算結果を挿入 [ 選択 ; テーブル::宛名_会社名 ; テーブル::会社名 & " " & $on ] End If
会社名に敬称をつけた宛名用のフィールド「宛名_会社名」を新しく追加しておきます。
宛名やラベルプリントにはこの宛名フィールドを使います。
ここでのポイントは「IsEmpty」関数の前に「NOT」をつけたこと。
これによって、「フィールドが空欄でなければ…」という動作をさせることができました。
同じ要領で氏名には、変数を「様」に替えて設定。
最終的には、会社名と氏名を同時に処理するスクリプトにしました。
スクリプトの設置
作ったスクリプトは、基本情報を入力する画面のレイアウト設定の「スクリプトトリガ」に設定しました。
これで、宛名フィールドには敬称がついたデータが入ることになりました。