以前の「ファイルメーカーで郵便番号から住所入力」ですが、環境がFileMaker Pro 11で作成したもので大分古かったので、 FileMaker Pro 18で作成したものに変更しました。
環境
FileMaker Pro 18 Advanced
郵便番号簿の作成
郵便番号データダウンロード – 日本郵便のページから、「読み仮名データの促音・拗音を小書きで表記するもの」の「全国一括」をダウンロード
FileMaker Proを起動して、「ファイル」メニューから「新規作成…」を選択。左側「作成」内の「変換」アイコンを選択したら、右下「作成」ボタンをクリック。

オープンダイアログで「表示」ポップアップメニューより「コンマ区切り値」を選び、解凍した「KEN_ALL.CSV」を指定して読み込みます。データベース名は「郵便番号簿」とします

読み込んだら、「ファイル」メニューから、「管理」»「データベース…」を選択。テーブルタブにてテーブル名を「KEN_ALL」から「郵便番号簿」に変更。「フィールド」タブにてフィールド名を分かりやすいように変更します。f3を郵便番号、f7を都道府県、f8を市区町村、f9をその他の住所に

さらに、住所部分が、f7の都道府県、f8の市区町村、f9のその他の住所と分かれているので、それを合わせたフィールド名「連結住所」を新たに作成。

郵便番号、都道府県、市区町村、その他の住所にそれぞれ索引を設定します。
設定するフィールド名を選択したら、右下の「オプション」ボタンをクリック。「データの格納」タブにて、索引設定の最小値ラジオボタンと「必要時に索引を自動設定」を選択して「OK」ボタンをクリック

設定後は以下のようになります。

新たに追加したフィールド「連結住所」を選択したら、タイプで「計算」を選び、「変更」ボタンをクリック。確認ダイアログが表示されたら、内容を確認のうえ「OK」ボタンをクリック。
計算「連結住所」を指定ウインドウにて、以下の計算式を入力したら、「OK」ボタンをクリック。
都道府県 & 市区町村 & Substitute ( その他の住所 ; “以下に掲載がない場合” ; “” )
計算結果を「テキスト」にして、検索オブションで最小限を選択

設定後は以下のようになります。

住所録の作成
テスト用に新たなデータベースを作成
ふりがな姓、ふりがな名、氏名 姓、氏名 名、郵便番号、郵便番号2、住所_1の各フィールドを持ったデータベースで、名前は「住所録」とします

郵便番号は表示用にハイフンありとします。その為、郵便番号簿からデータを取得するためにハイフンを取り除いた郵便番号2を利用します。「ファイル」メニュー →「管理」→「データベース」→「フィールド」タブにて、郵便番号2を選択して、タイプ「計算」を選び、「変更」ボタンをクリック。確認ダイアログが表示されるので、「OK」ボタンをクリック。
計算式に以下を記入
Substitute(郵便番号; “-” ; “” )
計算結果を「テキスト」にして、検索オブションで最小限を選択

以下のようになります。

リレーションシップの設定
「ファイル」メニュー →「管理」→「データベース」→「リレーションシップ」タブにて、左下の「テーブルを追加」ボタンをクリックして、「データソース」ポップアップメニューで「郵便番号簿」を指定。もし郵便番号簿がなければ、「FileMakerデータソースの追加」を選択して郵便番号簿の場所を指定。認証ダイアログが表示されたら、内容を確認のうえ「はい」ボタンをクリック。


郵便番号簿の郵便番号から、住所録の郵便番号2に接続する

接続後の状態

郵便番号を入力してボタンを押すと、住所に変換するボタンを設置します。
スクリプトの作成
「ファイル」メニュー→「管理」→「スクリプト」 左上の「+(新規)」ボタンをクリックして 右のリストから、「編集」内の「消去」を選択してダブルクリック

右側に、消去[]と表示されるので、下の「内容全体を選択」、「指定フィールドへ移動」にチェックを入れると設定ウインドウが開くので、
「フィールド指定」ウインドウのポップアップメニューより「住所録」を選択して、下のリストから「住所1」フィールドを選択


消去[選択; 住所録::住所1] となります。

次に、右のリストから、「フィールド」内の「フィールド設定」を選択してダブルクリック

「ターゲットフィールドの指定」にチェックを入れて、「指定」ボタンをクリック

「フィールド指定」ウインドウのポップアップメニューより「住所録」を選択して、下のリストから「住所1」フィールドを選択

「計算結果」の「指定」ボタンをクリック

右の関数のリストから、「Lookup」を選択
左のポップアップメニューより「郵便番号簿」を選択して、リストから「連結住所」フィールドを選択
「OK」ボタンをクリック


フィールド設定 [ 住所録::住所1 ; Lookup( 郵便番号簿::連結住所 )] となります。

「新規スクリプト」を右クリックで名前変更を選択、スクリプト名を「郵便番号から住所を入力」とします。

ボタンの作成
メイン画面に戻って、「表示」メニューから、レイアウトモードへ
郵便番号の右に「郵便番号から住所を入力」というボタンを作成
ボタンを選択したら、「書式」メニューから「ボタン設定」(または、右クリックからボタン設定を選択)
左のリストで、「制御」内の「スクリプト実行」を選択、開いた 「スクリプト設定」ウインドウにて、2.で作成したスクリプト「郵便番号から住所を入力」を選択して、「OK」ボタンをクリック



メイン画面に戻って、「表示」メニューから、ブラウズモードへ
レイアウトを保存しますかと聞かれたら、保存を 試しに、郵便番号フィールドに「106-6140」と入力して、「郵便番号から住所入力」ボタンをクリックすると
以下のように表示されます。

このままだと、同じ郵便番号に割り当てられている住所が複数ある場合、例えば、「011-0951」には、秋田県秋田市土崎港相染町と秋田県秋田市土崎港古川町が割り当てられている為問題が出てしまいます。
で、値一覧の設定を行います。
「ファイル」メニュー → 「管理」→ 「値一覧」を選び、「新規」ボタンをクリック。値一覧名は「住所一覧」に


「フィールドの値を使用」をチェックすると、次の設定画面が開くので(開かなければ、「フィールド指定」ボタンをクリック」
「最初のフィールドの値を使用」ポップアップメニューにて、「郵便番号簿」を選択。リストにて「連結住所」を選択
「次のテーブルから関連レコードの値のみ含める」にて「住所録」を選択

元の画面に戻ったら、「OK」ボタンをクリック

設定後は以下のようになります。「OK」ボタンをクリックしてウインドウを閉じます。

メインの画面に戻って、「表示」メニューから、「レイアウトモード」を選択
住所1を選択して、コマンド + iで「インスペクタ」ウインドウを表示
「コントロールスタイル」ポップアップメニューにて「ドロップダウンリスト」を選択
「値一覧」ポップアップメニューにて、「住所一覧」を選択
「一覧の表示切り替え用矢印を表示」にチェックを入れる

データベース「郵便番号簿」を開いて(念のためデータベース「郵便番号簿」をコピーしておいてください)、「レコード」メニューより、「全レコード削除」を選択
郵便番号データダウンロード – 日本郵便のページから、「読み仮名データの促音・拗音を小書きで表記するもの」の「全国一括」をダウンロード。(KEN_ALL.CSV)
「ファイル」メニューより「レコードのインポート」»「ファイルを選択」
オープンダイアログにてKEN_ALL.CSVを選択して、「開く」ボタンをクリック

確認後問題なければ「インポート」ボタンをクリック

完了
コメント