カテゴリー
スポンサーリンク

FileMaker検索のキホン

ファイルメーカーの基本 基本編

こんにちは!

今回のテーマは、検索のキホンです。

FileMaker(ファイルメーカー)では、検索がすべてのキホンといっても過言ではないでしょう。FileMakerの役割は「データベース」です。データベースは、ただ、データを入れただけでは、機能しません。

検索して、表示するレコードを絞る(対象レコード)ことで、その実力を発揮します。

この対象レコードを作成する手順を誤ると、思った通りのデータが表示されず、せっかく業務効率を目指して、FileMakerを使っているにもかかわらず、効果が得られないといったこともあり得ます。

フィールドのタイプによる検索結果の違い

もっとも簡単な検索方法は、下記のように手動で検索モードにして検索をする方法です。

この方法では、ユーザーの検索したいフィールドを指定して、条件を設定して検索を行うことができます。FileMakerをただのデータの入れ物として使っているときや、検索条件が多岐にわたる場合には便利ですが、実際の運用ではあまり使わないというものではあります。

FileMakerの検索は、そのフィールドタイプによって動作が変わることがあります。

特に変わるのは、数字とテキストのタイプです。

例えば、数字のフィールドにも、テキストのフィールドにも同じデータが入っていたとします。1~100までの数字のデータが入っていたとします。

この場合、「1」を入力して検索した場合、数字フィールドの場合は「1」だけが対象レコードになります。つまり対象レコードは1件です。

対して、テキストの場合は、「1」を含むレコードが検索される可能性があります。例えば「21」もそうですし。「51」も表示されます。

このように、入っているデータは同じで、条件が同じでも結果が変わることがあります。

よく使う演算子

また、条件とセットで使う「演算子」があります。これを使うことによってより幅広い検索を行うことができます。

演算子
=空白を検索(=)だけをフィールドに入力
*何か入力されているフィールド(空白じゃないフィールド)のレコードを検索
*文字「文字」が含まれているレコードを検索
==文字完全に一致するもののみを検索
例えば「==千葉」と検索すると、「東千葉」や「南千葉」は検索されない
日付の範囲を選択
「2025/10/1…2025/10/15」
≤ ≥以上、以下を検索
//今日を検索(日付フィールド)

実運用する業務アプリでは、手動検索モードは使わない

業務アプリを作っていく場合は、これらの基本を踏まえて、作成していくといいでしょう。

ですが、業務アプリを作る場合は、先ほどの手動で行う検索モードは使わないようにしましょう。

理由はいくつかありますが、最も重要なのが効率が悪いということです。検索は、データベースを扱う上で最も重要な機能ですから、何回も行うことになります。

そのたびに、検索モードを開いていては効率が悪いわけです。

基本的には、定型の検索をスクリプトに設定しておき、それをボタンに割り当てて使うというのが一番でしょう。

こちらがその例です。「帳票作成と一覧(すべて)」以外のすべてのボタンは、あらかじめよく使う検索条件をスクリプトで設定して、簡単に使えるようにしてあります。下記はスクリプトの例です。

エラー処理[オン]

また、スクリプトには、エラー処理[オン]は必ず入れておきましょう。これがないと、ユーザーに対象レコードがなかったことをダイアログで通知することになります。これによって、ユーザーはダイアログを閉じるためにクリックをしなければなりません。ここで、ひとつ効率が悪くなります。

クイック検索の活用

いろいろなフィールドに、いろいろな条件を入力する場合は、クイック検索を活用しましょう。

クイック検索は右上に表示されています。これを利用することで、簡単に検索モードを使うことなく検索することができます。ツールバーを隠してる場合は、表示されません。

こちらも、対象レコードがない場合には、エラーダイアログが出ますので、コレが煩わしい場合は、スクリプト化しておくのもいいでしょう。また、ツールバーを隠している場合にもスクリプト化は有効です。

このようにスクリプトに設定し、レイアウトのボタンに設定すればOKです。[test2024::text]には、クイック検索に使用する検索条件を入力するためのフィールドを設定します。このフィールドはグローバルフィールドにしておくことをおススメします。

グローバルフィールドは、フィールドの定義の画面で、「グローバル格納」にチェックを入れると適用できます。

クイック検索に含まれるフィールド

クイック検索はそのレイアウトに含まれているフィールドが使われます。ただし、下記のように設定したフィールドには適用されません。設定はインスペクタでできます。