変更箇所がどこか、すぐに分かりますか?
複数の項目を編集したあと、「さっきどこを変えたんだっけ?」と迷うことはないでしょうか。特に、入力チェックや承認作業をする人にとっては、「どこが変更されたのか」が一目で分かると、とても便利です。
FileMaker には、レコードを編集したときに「どのフィールドが変更されたか」を教えてくれる Get( ModifiedFields ) という関数があります。これをうまく使うと、変更された項目だけを枠で囲んだり、背景色を変えて強調表示することができます。
ここでは、専門用語はできるだけ避けながら、「変更されたところだけを目立たせる」ための基本的な考え方と、具体的な設定方法を紹介します。
Get( ModifiedFields ) とは?イメージで理解する
Get( ModifiedFields ) は、「今、編集中のレコードで、どのフィールドが変更されたか」を教えてくれる関数です。イメージとしては、次のような感じです。
- レコードを開いて編集を始める
- 何かのフィールドの内容を変更する
Get( ModifiedFields )を呼び出すと、「変更されたフィールド名のリスト」が返ってくる
この「変更されたフィールド名のリスト」を利用して、「このフィールドは変更されているかどうか?」を判定し、変更されていたら色を変える、といったことができます。
ポイントは、「どのフィールドが変更されたか」を毎回自分で記録しなくても、FileMaker が自動で把握してくれている、というところです。
変更フィールドを色で強調する基本アイデア
変更箇所を強調表示する一般的な流れは次のとおりです。
- 計算フィールドを用意して、
Get( ModifiedFields )の結果を保存しておく - 各フィールドの条件付き書式で、「自分のフィールド名がそのリストに含まれていたら色を変える」ように設定する
こうすることで、編集中のレコードで変更した項目だけが、自動的にハイライトされるようになります。
ステップ1:変更フィールド一覧を保持するフィールドを作成
まずは、どのフィールドが変更されたかを覚えておくためのフィールドを 1 つ作ります。
- 管理画面で、対象のテーブルに新しい計算フィールドを作成します。
例:フィールド名z_ModifiedFields - 計算式に次のように入力します。
Let ( [ wFields = Get ( ModifiedFields ) ] ; If ( IsEmpty ( wFields ) ; wFields ; Substitute ( wFields ; "¶¶" ; "¶" ) ) ) - 戻り値のタイプは「テキスト」にします。
- オプションで、「インデックスを作成しない」を選んでおくと、不要なインデックス作成を防げます(必須ではありません)。
このフィールドは、レコードを編集している間、「変更されたフィールド名のリスト」を持っていてくれます。後で、条件付き書式からこのフィールドを参照します。
ステップ2:条件付き書式で変更箇所をハイライト
次に、実際にフィールドを色や罫線で強調表示する設定を行います。ここでは例として、「変更されたフィールドは背景を薄い黄色にする」方法を紹介します。
1. レイアウトモードでフィールドを選択
- レイアウトモードに切り替えます。
- 変更箇所を強調したいフィールド(例:会社名、住所、電話番号など)をクリックして選択します。
2. 条件付き書式を設定
- メニューから「書式」→「条件付き書式…」を選びます。
- 「条件を追加」をクリックして、新しい条件を作成します。
- 「条件」のところに、次のような計算式を入力します。
PatternCount ( "¶" & z_ModifiedFields & "¶" ; "¶" & GetFieldName ( テーブル名::フィールド名 ) & "¶" ) > 0
ここで、
z_ModifiedFieldsは先ほど作成した計算フィールドテーブル名::フィールド名は、今、条件付き書式を設定しているフィールド
です。
複数のフィールドに設定するときには、それぞれのフィールド名に合わせてこの部分を書き換えてください。
もし書き方に不安があれば、計算式の編集画面で「フィールド」一覧から該当のフィールドをダブルクリックし、GetFieldName ( ) で囲むようにすると入力ミスを防げます。
3. 強調表示のスタイルを決める
条件が入力できたら、「書式」側でどのように強調するかを選びます。
- 背景色を薄い黄色にする
- 文字色を赤にする
- 太字にする
- 枠線を太くする
など、確認しやすいスタイルを選んでください。「背景色 + 太字」など、複数の書式を組み合わせることも可能です。
どのタイミングで「変更された」と判断される?
Get( ModifiedFields ) は、基本的には「レコードを編集している間だけ」情報を持っています。レコードを確定する(コミットする)と、内容がリセットされるイメージです。
そのため、この仕組みは編集中の確認に向いています。
- ユーザーがフォームを開く
- いくつかの値を変更する
- 承認者が変更箇所を目で確認する
- 問題なければ保存(コミット)する
といった流れで、「どこを直したのか」を即座に把握できます。
逆に、「過去の版と見比べて差分を記録しておきたい」といった用途には、別途ログテーブルを用意するなど、もう少し高度な仕組みが必要になります。
運用時のちょっとした工夫
実際に運用する際には、次のような工夫をすると、より使いやすくなります。
- 見せたいフィールドだけを対象にする
すべてのフィールドをハイライト対象にすると、かえって見づらくなることがあります。ユーザーにとって重要な項目だけを選んで設定すると、確認が楽になります。 - 入力中かどうかで表示を切り替える
「入力モードのときだけハイライト」「閲覧時は通常表示」など、レイアウトを分けたり、別の条件付き書式で切り替えるやり方もあります。 - レイアウト複製で設定を使い回す
一度きちんと条件付き書式を組んだレイアウトを複製すると、別の画面でも同じロジックを流用しやすくなります。
まとめ:Get( ModifiedFields )で「どこが変わったか」を見える化
Get( ModifiedFields ) を使うことで、レコード編集時に「どのフィールドが変更されたのか」を簡単に把握できるようになります。この記事で紹介したポイントは以下のとおりです。
Get( ModifiedFields )は「変更されたフィールド名のリスト」を返す- その結果を計算フィールドに保持し、条件付き書式から参照する
- 各フィールドで「自分のフィールド名がリストに含まれているか」を判定して、色などを変える
難しそうに見えますが、実際には「計算フィールド 1 つ」と「条件付き書式」の組み合わせだけで実現できます。まずはテスト用のレイアウトで試してみて、使いやすいハイライト方法を探ってみてください。