2014年12月22日月曜日

FileMakerでデータの入力ログを記録してみる

ログを記録する


FileMakerには「誰が」「いつ」「どこを」「どのように」変更したという履歴を残す機能がデフォルトではありませんので、開発者自身がその機能を作ることになります。

ログを記録しておく理由にはいくつかありますが、主に、

・誤って入力してしまった場合に後で復活できるようにするため。

・誰がそれを入力したのかを知るため

・データベースの使われ方の統計を取るため

があるでしょうか。

またログはその後のソリューションの改善にも役立ちます。同じような入力ミスが多いようであれば、それを防ぐために、改良しなければいけませんので、そういったことにも役立ちます。

方法

方法はいくつもありますが、簡単な方法を一つご紹介します。

・ログを取りたいテーブルにそれを記録するためのフィールドを作成。

・オプションで、「入力値の自動化」「計算式」を設定します。

・「フィールドに既存の値が存在する場合は置き換えない」のチェックを外します。

・計算式は下記の図のようになります。







この計算式でLet関数を使用します。

最初の変数は、この計算式を起動するためのトリガーです。

変数に代入しているフィールドはログを取りたいフィールドを設定します。

次に、計算で、変更のあったフィールド名、内容、タイムスタンプ、アカウント名を取得して書き込みます。

また、繰り返し記録するため、改行区切りのリストで変更があるたびに追加されていきます。

実際に記録されるログはこんな感じになります。






注意点

この方法には注意点があり、基本的にユーザが手入力したものしか反映されません。フィールド設定のスクリプトステップでは前にフィールドへ移動のステップを使えば反映されますが、フィールドがアクティブにならないものでは、「いつ、誰が」という記録は残りますが、どのように変更されたかというところまでは残りません。

2 件のコメント:

  1. 素晴らしい方法をありがとうございます。
    やってみたのですが、上書きされます。どこをチェックすればよいでしょうか。バージョン11、Winです。宜しくお願いします。

    返信削除
    返信
    1. コメントありがとうございます。
      少し計算式の補足します。
      「name」「tel」というのは、このフィールドが変更された場合にログを作成するフィールドです。「name」「tel」というフィールドがあり、そのフィールドが変更された場合に、この計算式が作動します。

      最後の「log」というのはこの計算式が設定されているフィールドになります。
      最後に「&log」となっている部分があれば、上書きされずに最後に元々のデータが上書されると思います。

      削除