OnWindowTransaction
1 つ以上のレコードの変更が正常に確定された後、スクリプトを実行してスクリプト引数として JSON オブジェクトを渡します。JSON オブジェクトには確定したすべてのレコード処理のファイル名、基本テーブル名、レコード ID、処理、およびコンテキストフィールドの内容が含まれます。
このスクリプトトリガをアクティブにする処理:
-
レコードが作成、変更、または削除された後に確定される
-
開いているトランザクションが正常に確定される
スクリプト実行のタイミング
イベントが処理された後
トリガを使用できるモード
ブラウズモードと検索モード
結果
なし
互換性
| 製品 | サポート |
|---|---|
|
FileMaker Pro |
はい |
|
FileMaker Go |
はい |
|
FileMaker WebDirect |
はい |
|
FileMaker Server |
はい |
|
FileMaker Cloud |
はい |
|
FileMaker Data API |
はい |
|
カスタム Web 公開 |
はい |
起点バージョン
20.1
説明
1 つ以上のレコードを確定する処理はすべてこのスクリプトトリガをアクティブにします。開いているトランザクション内 ([トランザクションを開く] スクリプトステップを参照) である場合でもそうでない場合でも同じです。このトリガは確定に関する情報を含む JSON オブジェクトをスクリプト引数としてスクリプトに渡します。このトリガはすべてのレコードの作成、変更、および削除を記録するスクリプトと共に使用できます。たとえば、変更、変更したユーザ、変更日時などを記録する監査ログなどです。
トリガされるスクリプトで Get (スクリプト引数) 関数を使用して JSON オブジェクトを取得します。JSON オブジェクトの構造は次のとおりです:
{
"FileName" : {
"BaseTableName" : [
[ "Operation", RecordID, FieldContent ],
...
]
}
}
-
"FileName"はファイル拡張子なしのデータベースのファイル名です。 -
"BaseTableName"は影響を受けたレコードの基本テーブルの名前です。 -
"Operation"は"New"、"Modified"、または"Deleted"です。 -
RecordIDはレコードの内部 ID 番号です。 -
FieldContentはそのレコードのコンテキストフィールドの内容です。このフィールドを使用してスクリプトに追加情報 (例: 現在のユーザ、タイムスタンプ、およびフィールドの値) を渡すことができます。フィールドに有効な JSON が含まれている場合、テキスト文字列ではなく JSON 値として含まれます。テーブルに一致するコンテキストフィールドが存在しない場合、空の文字列が使用されます。
確定により複数の基本テーブルのレコードが影響を受ける場合、各テーブルは "FileName" キーの下にそれぞれの配列を持ちます。他のファイルの関連テーブルでレコードが影響を受ける場合、各ファイルはそれぞれの最上位キーを持ちます。
このトリガを構成する際、[フィールド名:] オプションでコンテキストフィールドを指定します。[フィールド名:] が空白のままの場合、トリガは各基本テーブルで「OnWindowTransaction」という名前のフィールドを検索します。テーブルに一致するフィールドが見つからない場合、そのテーブルのレコードでは FieldContent は空の文字列になります。
メモ
-
このトリガはファイルごとに構成されます。別のファイル内の関連テーブルでレコードが変更された場合、そのファイルに OnWindowTransaction スクリプトトリガが設定されていなくても、それらのレコードのエントリは JSON 引数に含まれます。
-
レコードを削除する場合、コンテキストフィールドのデータが取得されてからレコードが削除されます。新規レコードおよびレコードを変更する場合、レコードが確定された後でコンテキストフィールドのデータが取得されます。
-
復帰したレコードやトランザクションはこのトリガをアクティブにしません。[レコード/検索条件復帰] および トランザクション復帰を参照してください。
-
FileMaker Data API または OData API でデータベースに直接アクセスする場合、このトリガはアクティブになりません。ただし、それらの API で実行されたスクリプトはこのトリガをアクティブにすることができます。
-
OnWindowTransaction で使用する監査ログスクリプトの例については、こちらの Claris エンジニアリングブログの投稿を参照してください。