[FileMaker] グローバルフィールドと変数のスコープ

FileMaker で最近覚えたグローバルフィールドを使ってみた。「個別のレコードではなく、ファイル内で統一で使える値が入ったフィールド」という理解だけど、使っていてよく分からない現象が起きた。

つまり、ファイルを共有したときに、ホストのグローバルフィールドの内容がクライアントに反映されないのだ。変だなーとずっと悩んでいたら答えを見つけた。

グローバルフィールド:概要 | FileMaker
http://filemaker-jp.custhelp.com/app/answers/detail/a_id/15275/~/%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%EF%BC%9A%E6%A6%82%E8%A6%81

たぶん基本中の基本なんだと思うけど、グローバルフィールドってのはデータベースが持つ値なのではなく、ユーザーごとに持つ値なんだね。そして、ホストのグローバルフィールドをクライアントに反映させることができるけど、グローバルフィールドの値が保存されるのはデータベースを閉じたとき。すなわち、データベースを使用中にクライアントのグローバルフィールドの値を動的に変化させることはできないのだ・・・。

このややこしい仕組みがあるから、共有をするデータベースでは安易にグローバルフィールドは使えないなあ・・・。

それと似たものに変数がある。変数にはローカル変数とグローバル変数がある。

変数を設定
http://www.filemaker.com/help/13/fmp/ja/html/scripts_ref1.36.16.html

ローカル変数は実行中のスクリプト内でのみ有効で、スクリプト終了後に削除される。一方、グローバル変数はスクリプト間で共有できる、一つのファイル内で有効な変数だ。これも注意しないとね。

要するにスコープ(適用範囲)を意識しなければいけないということ。

FileMaker は奥が深いから、やはりきちんと学ばないといけないね。