【FileMaker】修正履歴を残す

これもまた、よくある事例です。
「いつどこを修正したか」の履歴を残しておきたい、というやつです。

やりたいことは、こんなこと。
スクリーンショット 2015-08-13 11.02.43.png
ポータルツールで更新履歴を同じ画面に出しています。
履歴は表に出なくてもいいけど、とにかく、「いつどこを修正したか」が残っていればOK。
複数人での運用だったら、ここに「だれが」が入ってもいいですよね。

では。

更新履歴のテーブルを作成。
スクリーンショット 2015-08-12 11.09.55.png
更新履歴idの連番は、単にデータの重複をなくすためなので、余計っちゃ余計なので、更新日と更新時間(もしくはタイムスタンプ型のフィールド)を複合主キーにしてもいいかも。

リレーションは、レイアウトidでつないでます。
スクリーンショット 2015-08-12 11.10.05.png

レイアウトは自動保存ではなく、ボタンを押したタイミングで行うようにレイアウト仕様を設定。
スクリーンショット 2015-08-12 10.20.50.png
まぁ、この辺はお客さんの好みですかね。

プラス、修正前のデータを画面が表示されたタイミングであらかじめ保存しておきます。
スクリーンショット 2015-08-13 11.10.25.png

中身はこんな感じで、グローバル変数にそれぞれの項目を保存しています。
スクリーンショット 2015-08-17 11.58.43.png

わざわざフィールドを作成するのもなんなのでグローバル変数に入れておいたけど、この辺はこれがベストなのかなーといつも考えます。。。

レイアウトの「更新」ボタンを押したときに、修正した内容を保存して、履歴を残しています。
スクリーンショット 2015-08-13 10.59.52.png
また、同じ画面にとどまって数回更新ボタンを押した際にも履歴が残るように、修正した内容をグローバル変数に保存してます。

改善するならば、履歴のテキストを作る処理(変数に編集・セット)が冗長なので、サブスクリプト化すればすっきりするかな。

では、また!