FileMaker 19.6 の新機能は色々ありますが、これまでの開発手法が変わるぐらいの機能といえば「トランザクション」機能です。
簡単に言えば、スクリプトで色々と処理を実行した後で無かったことにする機能です。
例えば、インポートした後で項目を間違えていたので無かった事にしたい・・・
↓
でも、インポート処理の後で色々データの整形とか処理入れちゃって他のテーブルも更新かけちゃってる・・・
という場合でも無かった事に出来ます。
今回のサンプルファイル
今回トランザクション処理を入れたファイルは当社がサンプルファイルの作成&執筆&動画作成した「ポータルを含めて複製する(10分でスキルアップ)」を使いました。
ちょうど、複製の方法に
関連レコードを作成
インポート/エクスポート
変数に格納
のサンプルスクリプトがあるので、そこに組み込んでいます。
トランザクション処理の記述
トランザクション機能を使っての復帰するにはこんな感じのスクリプトを記述します。
無かった事にしたい処理、巻き戻したい処理を「トランザクションを開く」〜「トランザクション確定」で囲みます。
そして、「トランザクション復帰」で無かったことにします。
「トランザクション復帰」はそのスクリプトステップのオプションに復帰条件を書きます。「Exit Loop If」みたいなイメージです。
それぞれのスクリプトのヘルプは下記となります。
検証した結果
結果はどのスクリプトも問題なく復帰しました。
実際のスクリプトはこちら。
「トランザクションを開く」〜「トランザクション確定」間はネストします。
また、IfやLoopのように「トランザクションを開く」を設定すると、自動的に次の行に「トランザクション確定」が入ります。
上記の処理は「トランザクション復帰[条件:1]」として、スクリプトステップを実行すると必ず実行する設定にしましたが、下記のように終了条件を書くのが本来の書き方かな?と思います。
You Tube動画
こちらで、検証動画もアップしているので見て下さい。
使い所
データを復帰する理由としては、関連レコード、ポータルを含んだ処理の途中で他の人がデータを触っていて更新出来なかったというパターンがあります。その場合に復帰してから再度やり直す。ということが簡単に実現できます。開発者としては嬉しい限り。その辺の処理が使い所かと思います。
個人的に使えるなと思ったのが、インポート処理です。時々他のシステムからデータを取り込む処理を作る時に、安全に取り込むために一時的なテーブルを作って、まずはそこに取り込んでチェックしてから本番のテーブルへ取り込むということをしていました。その処理が簡単に作れるようになりますね。
注意事項・懸念点
フィールドの設定のシリアル番号は復帰しないので、シリアル値のカウンターは増えたままです。
番号を飛ばしたくない場合は採番処理を別で作る必要があります。
フィールドの設定のシリアル番号の設定を「確定時」にすると、どうも動きがおかしいです。ここは検証したいと思います。
Comments