FileMakerで「特定の日付だけを絞り込みたい」「期間を指定して検索したい」と思ったことはないでしょうか。毎回検索条件を打ち直したり、スクリプトを切り替えたりするのは意外と手間です。そんなときに便利なのが「グローバルフィールド」を使った日付フィルタです。画面上の入力欄に日付を入れるだけで、ボタンひとつで絞り込みできる仕組みを作ることができます。
グローバルフィールドで何が便利になるのか
グローバルフィールドは「どのレコードを表示しても同じ値が入っている」特殊なフィールドです。
この性質を利用すると、検索条件を一時的に入れておく“入力ボックス”として使うことができます。
例えば、
- 指定日の売上データだけを見る
- 「開始日」と「終了日」を入力して、期間内のレコードを表示する
- 今日・今月・先月など、よく使う日付条件をボタンで呼び出す
といった日付フィルタを、レイアウト上のシンプルな入力欄とボタンだけで実現できます。テーブルの構造を大きく変える必要もありません。
グローバル日付フィールドを用意する
まずは、フィルタ条件を入れるためのグローバルフィールドを用意します。ここでは例として「売上」テーブルを想定します。
- 管理メニューから「データベース」を開き、「フィールド」タブで売上テーブルを選択
- フィールド名「g_開始日」「g_終了日」を作成(タイプは日付)
- オプションで「グローバルストレージ(すべてのレコードで1つの値を共有)」にチェック
これで、どのレコードを表示しても、g_開始日とg_終了日に同じ値が入るようになります。あくまで「検索条件入力用の箱」として使うイメージです。
レイアウトに入力欄とボタンを配置する
次に、実際にユーザーが操作するレイアウトに、グローバルフィールドを配置します。
- レイアウトモードに切り替える
- フィールドツールから「g_開始日」「g_終了日」をヘッダやサイドバーなど見やすい位置に配置
- わかりやすいラベル(例:「開始日」「終了日」)を付ける
- 近くに「日付で絞り込み」ボタンを配置する
ここまでで、見た目は「日付を2つ入力して、ボタンを押すだけ」の簡単なフィルタ画面が整いました。次は、このボタンに日付フィルタのスクリプトを割り当てます。
スクリプトで期間フィルタを実行する
日付フィルタの基本的な流れは次のとおりです。
- 現在のレイアウトを表示したまま検索モードに切り替える
- 売上日フィールドに、開始日~終了日の範囲指定を入力する
- 検索を実行する
FileMakerのスクリプトで書くと、イメージは以下のようになります(実際のフィールド名は環境に合わせてください)。
新規スクリプト:日付で絞り込み
# エラートラップ開始
エラー捕捉 [オン]
# 検索モードに切り替え
検索モードに切り替え [一時停止しない]
# 期間指定の計算(開始日と終了日が両方入力されている場合)
If [ not IsEmpty ( g_開始日 ) and not IsEmpty ( g_終了日 ) ]
設定フィールド [ 売上::売上日 ;
g_開始日 & "..." & g_終了日 ]
Else If [ not IsEmpty ( g_開始日 ) ]
# 開始日のみ → その日以降
設定フィールド [ 売上::売上日 ; ">=" & g_開始日 ]
Else If [ not IsEmpty ( g_終了日 ) ]
# 終了日のみ → その日以前
設定フィールド [ 売上::売上日 ; "<=" & g_終了日 ]
Else
# どちらも空なら全件表示(検索せずに終了)
省略
End If
# 検索実行
検索実行 []
# エラーがあればメッセージ表示(該当なし等)
If [ Get ( 最後のエラー ) ≠ 0 ]
カスタムダイアログを表示 [ "該当データがありません" ]
End If
エラー捕捉 [オフ]
このスクリプトを「日付で絞り込み」ボタンに割り当てれば、グローバルフィールドに入力した日付で簡単にフィルタできるようになります。
よく使う日付条件をボタン化する
毎回日付を入力するのが面倒な場合は、「今日」「今月」「先月」といったボタンを用意し、そのボタンを押すとグローバルフィールドに自動で日付が入るようにすると便利です。
例:今日のデータを表示するボタンでは、次のようなスクリプトを組みます。
設定フィールド [ g_開始日 ; Get ( 日付 ) ]
設定フィールド [ g_終了日 ; Get ( 日付 ) ]
スクリプト実行 [ 「日付で絞り込み」 ]
「今月」の場合は、月初と月末の日付を計算して g_開始日 / g_終了日にセットすればOKです。このように、グローバルフィールドを“受け皿”として使うことで、さまざまな日付パターンに柔軟に対応できます。
グローバルフィールド日付フィルタ導入のポイント
最後に、運用時に意識しておきたいポイントをまとめます。
- グローバルフィールドは「ユーザーごと」に値が保持されるため、複数人で使う環境でも混線しにくい
- 「検索条件をクリア」ボタンを用意して、g_開始日 / g_終了日を空にするスクリプトも作っておくと親切
- 日付の入力ミスを減らすために、カレンダー形式の入力(ドロップダウンカレンダー)を使うと安心
- 実運用前に、該当件数や検索結果が想定どおりか必ずテストする
グローバルフィールドをうまく使えば、FileMakerの検索機能をぐっと使いやすくできます。まずはシンプルな「開始日~終了日フィルタ」から導入して、慣れてきたら「今日」「今月」「先月」などのボタンも追加してみてください。