FileMakerで簡単な入力画面を作りたいとき、「カスタムダイアログ」を使う場面は多いと思います。例えば「日付と担当者と金額をまとめて聞きたい」「入力ミスがないか、その場でチェックしたい」といった場面です。しかし、カスタムダイアログで複数項目を扱うと、どこまでできるのか、どうやって検証すればよいのか、少し迷いやすいところでもあります。
この記事では、カスタムダイアログで複数項目を入力して、基本的な検証(空欄チェックや数値チェックなど)を行う流れを、できるだけシンプルな言葉で整理して解説します。
カスタムダイアログで何ができる?
FileMakerの「カスタムダイアログを表示」ステップでは、以下のようなことができます。
- メッセージとタイトルを自由に設定できる
- 最大3つまで入力フィールドを表示できる
- ボタンを2〜3個用意して、押されたボタンを判定できる
多くのケースでは、この「最大3つの入力フィールド」を使って、簡易フォームのように利用します。例えば「日付」「担当者」「金額」といった3項目を一度に入力してもらう、といった使い方です。
複数項目入力の基本的な考え方
カスタムダイアログで複数項目を入力するときは、次の流れを意識しておくと分かりやすくなります。
- 一時的なフィールド(または変数)に入力してもらう
- OKボタンが押されたら、検証を行う
- 検証をパスしたら、本来のフィールドに値をセットする
カスタムダイアログで直接テーブルのフィールドを指定することもできますが、検証のためには、いったん変数やグローバルフィールドに受けてからチェックする方が管理しやすくなります。
基本的なスクリプトの流れ
ここでは例として、「日付」「担当者名」「金額」の3つをカスタムダイアログで入力し、OKが押され、かつ内容に問題がなければ、レコードのフィールドに反映する、という流れをイメージしてみます。
- スクリプト内で、あらかじめ変数を初期化しておく
(例)Set Variable [ $date; Value: "" ]など - 「カスタムダイアログを表示」ステップで3つの入力欄を設定し、それぞれ変数やグローバルフィールドに割り当てる
- 「If [ Get ( LastMessageChoice ) = 1 ]」でOKボタンかどうかを判定する
- OKが押されていたら、各入力値を検証する
- 問題がなければ、実際のフィールドに
Set Fieldで値を入れる - 問題があれば、メッセージを出すか、再度カスタムダイアログを表示してやり直させる
このように、「表示 → 入力 → OK判定 → 検証 → 反映」という流れで考えると整理しやすくなります。
よく使う検証のパターン
基本的な検証として、次の3つはよく使います。
- 未入力チェック(必須項目)
空欄でないかを確認します。
例:If [ IsEmpty ( $date ) or IsEmpty ( $staff ) or IsEmpty ( $amount ) ] - 数値チェック
金額など、数値であるべき項目をチェックします。
例:If [ not IsValid ( GetAsNumber ( $amount ) ) ]やIf [ Length ( Filter ( $amount ; "0123456789" ) ) < > Length ( $amount ) ]など - 日付チェック
日付が正しく入力されているかを確認します。
例:If [ not IsValid ( Date ( Month ( $date ) ; Day ( $date ) ; Year ( $date ) ) ) ]
あるいは、レイアウト上のフィールドに一度セットしてGet ( LastError )やGet ( LastExternalErrorDetail )などで確認する方法もあります。
検証で問題があった場合は、
- 「入力に誤りがあります」とメッセージを表示してスクリプトを終了する
- または、エラーの内容をメッセージで伝えて、もう一度カスタムダイアログを出し直す
といった対応をします。
再入力させるときの工夫
複数項目のうち、どれかが間違っているときに、入力済みの値まで消えてしまうと、ユーザーはストレスを感じます。再度カスタムダイアログを表示するときも、前回入力された値を初期値として表示するようにしておくと、かなり使いやすくなります。
そのためには、
- 入力値を変数やグローバルフィールドに保持しておく
- 再表示するカスタムダイアログでも、その値を指定しておく
といった工夫をします。こうしておくと、ユーザーは誤っていた項目だけを修正すればよくなり、入力ミスが減りやすくなります。
カスタムダイアログの限界と使い分け
カスタムダイアログは手軽で便利ですが、やれることには限りがあります。
- 入力フィールドは最大3つまで
- レイアウトのような柔軟なデザインはできない
- ポータルやリレーション先のデータを一覧で見せるのには向かない
項目数が多くなってきたり、入力ルールが複雑になってきたら、専用の入力レイアウトを作って、スクリプトでそのレイアウトに移動する方法に切り替える方がよい場合も多いです。
一方で、「簡単な3項目だけ一気に聞きたい」「確認と簡単な修正だけをその場で済ませたい」というようなケースでは、カスタムダイアログは非常に便利です。使う場面をうまく選ぶことで、開発の手間もユーザーの負担も抑えることができます。
まとめ:まずはシンプルなパターンから
カスタムダイアログで複数項目を入力し、基本的な検証を行うときのポイントをまとめると、次のようになります。
- 最大3項目までならカスタムダイアログで簡易入力画面が作れる
- 一時的な変数やグローバルフィールドを使って、
「表示 → 入力 → OK判定 → 検証 → 反映」の流れで組み立てる - 未入力チェック、数値チェック、日付チェックを基本として、
必要に応じて追加の条件を足していく - 再入力が必要な場合は、前回入力した値を初期値として表示するなど、
ユーザーがストレスなく修正できる工夫をする - 項目数やルールが増えてきたら、専用レイアウトへの切り替えも検討する
まずは小さなケースから試し、うまくいったパターンをテンプレートのように使い回していくと、自然と自分なりの「カスタムダイアログ+検証」の型ができてきます。そこから少しずつ応用を広げていくと、無理なくスキルを伸ばしていけるはずです。