【FileMaker】ファイルメーカのトランザクション機能で確認機能を作ろう

category: filemaker

※サンプルファイルがダウンロードできます。参考にしてください。

■トランザクション機能とは

簡単に説明すると
・登録・変更・削除した処理を無効にできる
実はFileMakerではV19.5まではトランザクション機能は存在していませんでした。
「トランザクション機能なしで、どうやってシステム作るの?」
と言われていましたが、バックアップをとって、なにかあった時はバックアップから復旧していました。

入力内容を確認して登録・中止がしたい

■入力確認機能

〇入力画面


伝票を入力し、「確認」または「中止」を選択します。

〇確認画面


ダイアログで「決定」「中止」「再入力」を選択します

〇中止画面


ダイアログで「再入力」「中止」を選択します

〇※過去の実現方法

ファイルメーカはV19.5まではトランザクション機能が無かったためこの機能を実現するためには
・入力用のグローバル項目で入力する
・確認後にグローバル項目からデータ項目に登録する
という手順で実現しました。しかし、手間がかかるため、「工数がかかるので費用アップしますがよいですか?」と説明し機能を提供することは稀でした。
トランザクション機能があれば簡単提供できるのに・・・と思っていました

ついにV19.6(2022年)にトランザクション機能が追加され下記の「入力用スクリプト」と「中止用スクリプト」スクリプト二個追加することで実現できるようになりました。
汎用的に使えるようにしていますので、画面が増えてもこのスクリプトで対応できます。

下記が簡単な解説です。サンプルファイルがダウンロードできますので、実際の動きなどを確認してください。

■入力用スクリプト

①画面表示

現在のレイアウト、作業後のレイアウト名、入力用レイアウトを取得します。

②トランザクション処理

(1)新規のときにレコードを追加する
(2)LOOP処理の中で「ブラウザモードに切り替え[一時停止:オン]」でデータを入力する
レイアウト「確認」ボタンで「スクリプトの再開」が設定してあり、スクリプトを再開する
(3)カスタムダイアログで処理選択します
1:決定でLOOPを終了し、トランザクションを確定します。
2:中止でトランザクションを終了します
3:再入力でLOOPを繰り返し、ブラウザモード(再入力)になります。

③レイアウトを切り変えて、メッセージ表示

2:中止の場合は元のレイアウトに切り替えます
1と3:明細のレイアウトに切り替えます

■中止用スクリプト

①非トランザクション状態

ツールバーで一時停止をキャンセルした場合に非トランザクション状態になります
そのときには処理中止として明細画面に切り替えます

②中止の確認処理

カスタムダイアログで処理選択します
1:中止として③の処理に進みます
2:再入力として、現在のスクリプトを終了し、ブラウザ画面に戻ります

③明細レイアウトに切り変えて、全スクリプト終了

「全スクリプト終了」で『入力用スクリプト』の「トランザクションの確定」を行わずに処理を終了します。
その結果、「トランザクション無効」と同様な処理になります。

■サンプルダウンロード

こちらをクリックしてダウンロードしてください。