概要
FileMakerを触って、手間取った箇所があるので忘備録として残しておきます。
実現したいこと
FileMakerだとレイアウトを切り替えたり、ポータルの行を変更すると自動的にレコードが書き込まれてしまうので、書き込むタイミングを制御できるようにする。
(親子テーブルは一括で更新したいんだよなぁ)
開発環境
ソフトウェア名 | バージョン | 説明 |
---|---|---|
Windows | 10 | OS |
FileMaker Pro | 21 | ノーコード開発ツール |
※ FilemakerはFileMaker Developer Subscriptionを購入して利用
設定方法
テーブル
使うのはグローバル変数テーブルの「gトランザクション制御」だけです
画面
イベント
ボタン
変更確定ボタン
オプション「現在のスクリプトを再開」を選択することによって、一時停止している OnRecordSelectスクリプトを
続行させトランザクションを確定しています。
変更取り消しボタン
オプション「現在のスクリプトを再開」を選択することによって、一時停止している OnRecordSelectスクリプトを
続行させトランザクションを確定しています。
その他イベント
OnRecordSelect(一番重要)
レコード読み込み時に実行される処理です。
最初に実行されます。
トランザクションの開始からロールバックorコミットまでを実行する処理です。
ロールバックするかコミットするかは、グローバル変数「gトランザクション制御」の値によって決定します。
「変更確定」ボタンを押せば、「gトランザクション制御」の値は"確定"になり、レコードは書き込まれます。
「変更取り消し」ボタンを押せば、「gトランザクション制御」の値は"復帰"になり、入力した値は元に戻ります。
7行目のスクリプトの一時停止は ボタンの入力待ちをするための処理です。
ボタンを押すと、スクリプトが続行し次の処理に進みます。
感想
・SQLのトランザクションと同じ感覚で使えます。
イベントを適切に選べばタイミングとかも自由度高く設定できそう。
エラー処理の関数もありますし標準的なことはできそう。
・下画像のバーを消したいですね。
入力待ちのテクニックは使い勝手こそ良さそうなんですが、ここだけは気になりますね。
・値を入力する前にトランザクションを貼るので、以下の問題点が発生します。これはFileMaker特有の感じかな
・トランザクションエラーで復帰したときにすべての入力値が元に戻る。
・DBにODBCで接続して、FileMakerのトランザクションしたときのクエリログを見てみたいと思いました。
時間があったら検証します!(多分やらない)
参考
ダウンロード
URL
Claris FileMaker 19.6 新機能 「今の変更全部なし!」を実現するトランザクション関連機能の使いどころと活用例
20:00あたり
https://www.youtube.com/watch?v=Dtttiew-hFI&t=1200s