2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[FileMaker] トランザクション機能を使って、レコードの書き込みを制御する

Last updated at Posted at 2025-07-25

概要

FileMakerを触って、手間取った箇所があるので忘備録として残しておきます。

実現したいこと

FileMakerだとレイアウトを切り替えたり、ポータルの行を変更すると自動的にレコードが書き込まれてしまうので、書き込むタイミングを制御できるようにする。
(親子テーブルは一括で更新したいんだよなぁ)

image.png

image.png

開発環境

ソフトウェア名 バージョン 説明
Windows 10 OS
FileMaker Pro 21 ノーコード開発ツール

※ FilemakerはFileMaker Developer Subscriptionを購入して利用

設定方法

テーブル

使うのはグローバル変数テーブルの「gトランザクション制御」だけです
image.png

画面

image.png

イベント

ボタン

変更確定ボタン

オプション「現在のスクリプトを再開」を選択することによって、一時停止している OnRecordSelectスクリプトを
続行させトランザクションを確定しています。

image.png

変更取り消しボタン

オプション「現在のスクリプトを再開」を選択することによって、一時停止している OnRecordSelectスクリプトを
続行させトランザクションを確定しています。

image.png

その他イベント

OnRecordSelect(一番重要)

レコード読み込み時に実行される処理です。
最初に実行されます。
トランザクションの開始からロールバックorコミットまでを実行する処理です。
ロールバックするかコミットするかは、グローバル変数「gトランザクション制御」の値によって決定します。
「変更確定」ボタンを押せば、「gトランザクション制御」の値は"確定"になり、レコードは書き込まれます。
「変更取り消し」ボタンを押せば、「gトランザクション制御」の値は"復帰"になり、入力した値は元に戻ります。
7行目のスクリプトの一時停止は ボタンの入力待ちをするための処理です。
ボタンを押すと、スクリプトが続行し次の処理に進みます。

image.png

感想

・SQLのトランザクションと同じ感覚で使えます。
 イベントを適切に選べばタイミングとかも自由度高く設定できそう。
 エラー処理の関数もありますし標準的なことはできそう。

・下画像のバーを消したいですね。
入力待ちのテクニックは使い勝手こそ良さそうなんですが、ここだけは気になりますね。
image.png

・値を入力する前にトランザクションを貼るので、以下の問題点が発生します。これはFileMaker特有の感じかな
 ・トランザクションエラーで復帰したときにすべての入力値が元に戻る。

・DBにODBCで接続して、FileMakerのトランザクションしたときのクエリログを見てみたいと思いました。
時間があったら検証します!(多分やらない)

参考

ダウンロード

URL

Claris FileMaker 19.6 新機能 「今の変更全部なし!」を実現するトランザクション関連機能の使いどころと活用例
20:00あたり
https://www.youtube.com/watch?v=Dtttiew-hFI&t=1200s

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?