はじめに
前書き
- この記事は FileMaker Advent Calendar 2020 17 日目の記事です。
対象読者
- Claris FileMaker Pro ユーザー
- スクリプトトリガで OnFirstWindowOpen を使っている/今後使おうと考えている人
検証環境
- Windows 10 Pro ローカル環境
- FileMaker Pro 19.1.3.315
- FileMaker Pro 18.0.3.317
準備
ファイルの準備
- 以下二つのファイルを用意します
- A.fmp12
- B.fmp12
A.fmp12
フィールドの用意
- 何でもよいのでフィールドを一つ作成
- この段階で
B.fmp12
ファイルのフィールドも同じように用意
- この段階で
- ブラウザモードで値を入れておく
-
B.fmp12
ファイルの方にも値を入れておく
-
リレーションシップ
- 外部データソースとして
B.fmp12
ファイルを登録してany
条件でリレーションを結ぶ
スクリプトの作成
- 以下のように
B.fmp12
ファイルで作成したreturn_global_var
スクリプトを実行し、その結果を受け取ってカスタムダイアログで表示するという内容- 先に
B.fmp12
ファイルでスクリプトを作成しておく
- 先に
B.fmp12
フィールドの用意
-
A.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 以前での実行検証はしていませんが、同じ挙動でしたかね……?
- @OnTheRocks-plz さんによると FileMaker Pro 16 でも同じ挙動が確認されたとのことです!
解決編
- じゃあ一体どうすればよいのです?🤔 という人のための、解決編記事は以下の通りです!