info More than 3 years have passed since last update.
FileMakerProのOnFirstWindowOpenスクリプトトリガ実行時の不思議な挙動 Last updated at 2020-12-24 Posted at 2020-12-17
はじめに
前書き
対象読者
検証環境
Windows 10 Pro ローカル環境
FileMaker Pro 19.1.3.315
FileMaker Pro 18.0.3.317
準備
ファイルの準備
A.fmp12
フィールドの用意
何でもよいのでフィールドを一つ作成
この段階で B.fmp12
ファイルのフィールドも同じように用意
リレーションシップ
外部データソースとして B.fmp12
ファイルを登録して any
条件でリレーションを結ぶ
スクリプトの作成
以下のように B.fmp12
ファイルで作成した return_global_var
スクリプトを実行し、その結果を受け取ってカスタムダイアログで表示するという内容
先に B.fmp12
ファイルでスクリプトを作成しておく
B.fmp12
フィールドの用意
スクリプトの作成
以下の三つを用意
open
set_global_var
return_global_var
open
については以下のように
先に set_global_var
を作っておく
ここでは単に set_global_var
を実行するだけなので、直接グローバル変数セットしてもよいけれど……クセとしてこういうつくりに
set_global_var
については以下のように
return_global_var
については以下のように
'set_gloal_var' で格納されたグローバル変数を結果として返す
スクリプトトリガの設定
ファイルオプションのスクリプトトリガ OnFirstWindowOpen
に open
スクリプトを指定
検証
A だけ開く → スクリプト実行
A.fmp12
ファイルだけを開く
スクリプト confirmation
を実行
値が何も返ってきていない = B.fmp12
ファイルでグローバル変数が格納されていないことを確認
このあとで B.fmp12
ファイルを開く
B.fmp12
ファイルのデータビューアを確認
空であることを確認
先に A.fmp12
ファイルでスクリプトを実行してからファイルを開くと OnFirstWindowOpen
が実行されない
A を開く → B を開く → スクリプト実行
A.fmp12
ファイルを開く
B.fmp12
ファイルも開く
A.fmp12
内のスクリプト confirmation
を実行
値が正しく返ってきていることを確認
スクリプト実行前に B.fmp12
ファイルを明示的に開いておくと、その時点で OnFirstWindowOpen
が実行される
おわりに
まとめ
OnFirstWindowOpen
スクリプトトリガが実行されなくなる条件一例
B.fmp12
ファイルを明示的に開かずに、 A.fmp12
ファイルで B.fmp12
内のスクリプトを実行してしまうと、OnFirstWindowOpen
が実行されなくなってしまう
この後に B.fmp12
を開いても OnFirstWindowOpen
は実行されない
感想
OnFirstWindowOpen
という名前なので、ウィンドウが開いていなければ実行されないトリガなのだ、という言い分であれば、それはまあ分かるのですが、その後実際にウィンドウを開いても実行されないのは First じゃないからだよという判定になってしまっているということなのか。いやでもファイルは裏側で開いているとしても、ウィンドウを開くのは初めてだよ……?? と思ってしまった……
であれば OnFirstFileOpen
というスクリプトトリガを強く欲してしまうのですが。いかがでしょうか?
FileMaker Pro 17 以前での実行検証はしていませんが、同じ挙動でしたかね……?
解決編
じゃあ一体どうすればよいのです?🤔 という人のための、解決編記事は以下の通りです!
Register as a new user and use Qiita more conveniently
You get articles that match your needs You can efficiently read back useful information You can use dark theme What you can do with signing up