待望の トランザクション スクリプト登場

こんにちは。名古屋の加藤です。

本日、Claris FileMaker 19.6がリリースされました。

そして、このClaris FileMaker 19.6より待望のトランザクションスクリプトが実装されました。

トランザクションを簡単に説明すると、複数のテーブルやレコードにまたがる処理を1つの処理にまとめて処理することです。

  • すべての処理が成功した場合にはデータの変更を確定します。
  • 一連の流れの中で、一つでも失敗があったときはすべての処理をキャンセルし、編集前の状態に戻します。

これまで、FileMaker でトランザクション処理を実装するためには、FileMaker の仕様を理解しレイアウトやスクリプトで工夫して開発する必要がありましたが、トランザクションスクリプトによってより簡単にできるようになりました。

Claris Engage Japan 2022でトランザクション処理についてのセッションを行いましたので、こちらも併せてご確認いただければと思います(2022年12月1日現在まだ動画が公開されていませんので、しばらくお待ち下さい)
https://www.youtube.com/watch?v=nV2vy6bfMHE

このトランザクションスクリプトを数回に分けて解説したいと思います。

まずは基本的な仕様について見ていきたいと思います。

トランザクション関連のスクリプトステップ

FileMaker 19.6で、トランザクション関連のスクリプトステップは以下の3つが追加されました。

  • トランザクションを開く
    トランザクションを開始します。この後「トランザクション確定」または「トランザクション復帰」によってトランザクションが終了されるまでトランザクションが開いた状態になります。
  • トランザクション確定
    トランザクションを確定します(レコードは作成・更新されます)
  • トランザクション復帰
    トランザクションを復帰します(レコードは作成・更新されず処理がキャンセルされます)

これらのスクリプトステップは、FileMaker Go や FileMaker WebDirect など、すべての FileMaker プラットフォームで使用できます。

トランザクション関連の関数

トランザクション関連の関数には以下のものがあります。

  • Get ( トランザクションオープン状態 )
    トランザクションが開いている時には「1」それ以外の時は「0」を返します。
  • Get ( 最終エラー詳細 )
    トランザクション専用の関数ではありませんが、トランザクション処理のエラーの確認に使えます。トランザクション処理中に発生したエラーの詳細を取得できます。取得できる内容は、スクリプト名、ステップ名、および行番号となります。

 

超重要事項

※※※※※※※ 超重要です※※※※※※※

クライアントのバージョンが19.6よりも前だと、トランザクションスクリプトが無視されるので、そもそもトランザクション処理になりません。

また、スクリプトステップ「エラー処理」がオンになっていると、ダイアログも出ません。

オフになっていてダイアログが表示されても、ユーザはどちらを選んでよいか判断できない可能性があります。

トランザクションスクリプトを既存のカスタムAppに実装する場合は、19.6よりも前のバージョンのことを考えた上で実装する必要があります。

 

要注意: 強制的に「トランザクション確定」がされるスクリプトステップ

以下のスクリプトステップを実行すると強制的にトランザクションが確定されます。使用頻度がそれほど高くないものもありますが、使用する際には注意が必要です。

  • データベースの管理を開く
  • オブジェクトの管理を開く
  • データソースの管理を開く
  • 名前を付けて保存
  • 再ログイン

その他

その他トランザクションスクリプトについての仕様・注意事項をいくつか紹介します。

  • 「トランザクションを開く」を書いたら必ず「トランザクション確定」がないとスクリプトを保存できない(「トランザクションを開く」を宣言したままスクリプトを終了することはできない)
  • If・End Ifのスクリプトステップ内に「トランザクションを開く」「トランザクション確定」または「トランザクション復帰」のどちらかだけ入れることはできない
  • Loop・End Loop のスクリプトステップ内に「トランザクションを開く」「トランザクション確定」のどちらかだけ入れることはできない
  • 「トランザクションを開く」「トランザクション確定」の間に「トランザクションを開く」「トランザクション確定」を入れ子にすることはできない
  • 「トランザクション復帰」で「テーブルデータを削除」で削除したデータを復帰することはできない
  • トランザクション処理中に、レコードをインポートした場合、インポートレコードのサマリーダイアログは表示されない
  • シリアル番号は「作成時」にすると「トランザクション復帰」では元に戻らない。「確定時」だと元に戻る

 

以上、取り急ぎ要点だけをかいつまんでご紹介しました。

引き続きトランザクションについて情報を更新していきたいと思います。

最近下記リンク先への流入増大したいこともあり、
流入量が多いとブログの価値が高まりますます投稿を加速していきたいと思います。
リンク先を開いていただけると大変助かります。
Claris International Inc. (日本語)
ご協力いただけましたら幸いです。