search
LoginSignup
0

More than 1 year has passed since last update.

Organization

FileMakerProのOnFirstWindowOpenスクリプトトリガ実行時の不思議な挙動

はじめに

前書き

対象読者

検証環境

  • Windows 10 Pro ローカル環境
    • FileMaker Pro 19.1.3.315
    • FileMaker Pro 18.0.3.317

準備

ファイルの準備

  • 以下二つのファイルを用意します
    • A.fmp12
    • B.fmp12

A.fmp12

フィールドの用意

  • 何でもよいのでフィールドを一つ作成
    • この段階で B.fmp12 ファイルのフィールドも同じように用意

image.png

  • ブラウザモードで値を入れておく
    • B.fmp12 ファイルの方にも値を入れておく

image.png

リレーションシップ

  • 外部データソースとして B.fmp12 ファイルを登録して any 条件でリレーションを結ぶ

image.png

スクリプトの作成

  • 以下のように B.fmp12 ファイルで作成した return_global_var スクリプトを実行し、その結果を受け取ってカスタムダイアログで表示するという内容
    • 先に B.fmp12 ファイルでスクリプトを作成しておく

image.png

B.fmp12

フィールドの用意

  • A.fmp12 ファイルの準備と同時に進める

スクリプトの作成

  • 以下の三つを用意
    • open
    • set_global_var
    • return_global_var

image.png

  • open については以下のように
    • 先に set_global_var を作っておく
    • ここでは単に set_global_var を実行するだけなので、直接グローバル変数セットしてもよいけれど……クセとしてこういうつくりに

image.png

  • set_global_var については以下のように
    • グローバル変数にフィールドの値をセットする

image.png

  • return_global_var については以下のように
    • 'set_gloal_var' で格納されたグローバル変数を結果として返す

image.png

スクリプトトリガの設定

  • ファイルオプションのスクリプトトリガ OnFirstWindowOpenopen スクリプトを指定

image.png

検証

A だけ開く → スクリプト実行

  • A.fmp12 ファイルだけを開く
  • スクリプト confirmation を実行
    • 値が何も返ってきていない = B.fmp12 ファイルでグローバル変数が格納されていないことを確認

image.png

  • このあとで B.fmp12 ファイルを開く
  • B.fmp12 ファイルのデータビューアを確認
    • 空であることを確認
    • 先に A.fmp12 ファイルでスクリプトを実行してからファイルを開くと OnFirstWindowOpen が実行されない

image.png

A を開く → B を開く → スクリプト実行

  • A.fmp12 ファイルを開く
  • B.fmp12 ファイルも開く
  • A.fmp12 内のスクリプト confirmation を実行
    • 値が正しく返ってきていることを確認
    • スクリプト実行前に B.fmp12 ファイルを明示的に開いておくと、その時点で OnFirstWindowOpen が実行される

image.png

  • 当然、データビューアにも格納されている

image.png

おわりに

まとめ

OnFirstWindowOpen スクリプトトリガが実行されなくなる条件一例

  • B.fmp12 ファイルを明示的に開かずに、 A.fmp12 ファイルで B.fmp12 内のスクリプトを実行してしまうと、OnFirstWindowOpen が実行されなくなってしまう
    • この後に B.fmp12 を開いても OnFirstWindowOpen は実行されない

感想

  • OnFirstWindowOpen という名前なので、ウィンドウが開いていなければ実行されないトリガなのだ、という言い分であれば、それはまあ分かるのですが、その後実際にウィンドウを開いても実行されないのは First じゃないからだよという判定になってしまっているということなのか。いやでもファイルは裏側で開いているとしても、ウィンドウを開くのは初めてだよ……?? と思ってしまった……
  • であれば OnFirstFileOpen というスクリプトトリガを強く欲してしまうのですが。いかがでしょうか?
  • FileMaker Pro 17 以前での実行検証はしていませんが、同じ挙動でしたかね……?
    • @OnTheRocks-plz さんによると FileMaker Pro 16 でも同じ挙動が確認されたとのことです!

解決編

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
What you can do with signing up
0