初心者にもわかるファイルメーカーの
使い方

レコードが即時確定されるトランザクション制御を制限する

2016-11-22 |  

入力画面で入力項目が複数あって、入力しているうちに
「あっ!項目が全部一行ずつズレて入力してる・・・」て事に
なった時、Excelなどをよく使っている方なら【戻る】を
入力した数だけクリックしたら元に戻れますが、FileMaker
では『即時上書き・即時確定』の機能に於いてExcelのような
【戻る】が出来ませんよね。

その場合、よく使われる機能が『トランザクション制御』です。

FileMakerでトランザクション制御を実現するためには、どんな仕組みが必要か?
早速説明していきます。

【手順1】

レイアウトを二つ(閲覧専用と編集専用)作成します。
%e7%94%bb%e5%83%8f1%ef%bc%88%e9%96%b2%e8%a6%a7%e5%b0%82%e7%94%a8%ef%bc%89

%e7%94%bb%e5%83%8f2%ef%bc%88%e7%b7%a8%e9%9b%86%e5%b0%82%e7%94%a8%ef%bc%89

ここで押さえておきたいポイントが二つ。

1. 閲覧用レイアウトの各フィールドはブラウズモードで入力ができないように設定する。

2. 必ず使用テーブルにflag_commit(このtips内ではこのように命名します)フィールドを用意する
二つ目のflag_commitフィールドは非常に重要なポイントです。
※これがなければ、トランザクション制御は成り立ちません。

【手順2】

スクリプトを用意します。用意するスクリプトは以下の四つ。

まずは、レコード編集を開始するスクリプト。
ここで肝になるのは、18行目のフィールド設定でflag_commitに”0”を挿入する処理。
フラグとして”0”が立っている時には、レコードを確定させないという処理を
次に説明するスクリプトに仕込んでいます。

このスクリプトは編集専用画面にトリガとして設定します。
使用するスクリプトトリガはOnRecordCommitです。このスクリプトトリガは、レコード変更の確定が行われた際に仕込まれた処理が走ります。これにより、上のスクリプトが走り
”true”の場合は確定され”false”の場合は確定されなくなります。

このスクリプトの17行目”レコード/検索条件復帰”スクリプトステップにより編集開始前のレコードの状態に戻します。 

このスクリプトは、編集を確定させるスクリプトです。

18行目のフィールド設定でflag_commitに”1”を挿入することでtrg_コミット判定の処理で
”true”となりレコードが確定可能になります。

以上が、簡単なトランザクション制御の説明でした。

トランザクション制御の最大のメリットは、一つ前のレコードの状態に戻せるというのが大きなメリットになります!!

例えば、一つのフィールドを書き換えて元に戻すことは容易ですが、複数のフィールドを書き換え
やっぱり前の状態に戻したいとなった時これを一つ一つ直すのは面倒ですし、忘れた場合もう誰も分かりません。

デメリットをあえて挙げるならば、手間がかかります・・・。

この仕組みを作る工数とレイアウトをもう一つ作る工数が余分にかかってきます。また、手入れも大変です。
大幅にレイアウトが変わった場合二つのレイアウトを変更しなければいけません。
デメリットは他にもありますが、この辺にしておきます。。。。。