サイトアイコン WEB-Geek-Site.com

ファイルメーカー|住所録 自動的に敬称をつける

氏名や会社名の後に自動的に敬称がつくようにしたい!

ファイルメーカーで住所録をつくっています。今回は、ハガキや封筒に宛名をプリントする際に、自動で敬称がつくようにする方法を考えてみました。

住所録データベースには、氏名や会社名のフィールドはすでに用意してありますので、会社名フィールドに社名が入力されていれば「御中」、氏名フィールドに名前が入力されていれば「様」が自動的にプリントされるようになれば、便利ですよね。

はじめは、それぞれに「敬称フィールド」をつくって、すべてのレコードで敬称の有無を選んで設定していました。

はぁ〜、めんどくさ〜い!!

で、今回はスクリプトを使ってもっと効率よく処理してみました。

 

敬称をつける方法

やりたい処理は、
会社名フィールドに入力されていれば「御中」を追加する、空欄ならばなにもしない
ということ。
なので、会社名フィールドが空欄かどうかを調べて、その結果で処理を振り分けてやるとできそうです。まとめると、下のようになります。

1)フィールドが空欄かどうかチェックする

2)結果によって処理を変える
  ・空欄:なにもしない
  ・入力あり:「御中」という文字を追加する

 

該当しそうな関数を調べてみると…

 

1)フィールドが空欄かどうかチェックする
論理関数・IsEmpty

2)結果によって処理を変える
  ・空欄:なにもしない
  ・入力あり:「御中」という文字を追加する
論理関数・If

 

この2つの関数が使えそうです。

 

今回使用する関数ついて

IsEmpty
フィールドが空欄の場合、または他のエラーが発生した場合は真 (1) を返します。それ以外の場合は偽 (0) を返します。

構文 IsEmpty ( フィールド )
引数 フィールド – 任意のフィールド名、テキスト式、または数値式
IsEmpty ( 注文番号 ) は、「注文番号」フィールドが空欄の場合、「1」を返します。
 
If ( IsEmpty ( 姓 ) ; “無効なレコード” ; “” ) は、「姓」フィールドが空欄の場合は「無効なレコード」と表示しますが、データが入力されている場合は何も表示しません。
 
IsEmpty ( 支払い額::支払い日 ) は、たとえば、「支払い額」テーブルが移動されたり、名前が変更された場合、「1」を返します。
 
IsEmpty ( “テキスト” ) は、「0」を返します。


参照「ファイルメーカー16/関数リファレンス」:https://fmhelp.filemaker.com/help/16/fmp/ja/index.html#page/FMP_Help%2Fisempty.html%23
 
 

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」をつけたこと。
これによって、「フィールドが空欄でなければ…」という動作をさせることができました。

 

同じ要領で氏名には、変数を「様」に替えて設定。
最終的には、会社名と氏名を同時に処理するスクリプトにしました。

スクリプトの設置

作ったスクリプトは、基本情報を入力する画面のレイアウト設定の「スクリプトトリガ」に設定しました。

これで、宛名フィールドには敬称がついたデータが入ることになりました。

モバイルバージョンを終了