D.R.Y.なコピースクリプト

変更されたくないので 表示用の計算フィールドにしたりマージフィールドで代用したり…ただ、そのフィールドの値をコピーだけはしたい…というニーズは結構ある。

どうということもない…とそれ用のスクリプトを作るわけだが、そのフィールドの数だけ作るのはアフォみたい。

そこで使い回せる D.R.Y. なコピースクリプト。


FileMaker Magazine の Using Utility Scripts で配布しているサンプルファイルがわかりやすい。

(subscribers only のようなので詳しい陳述は避けて以下理屈だけざっくり説明する)

スクリプト引数は…

GetFieldName ( フィールド名 )

を割り当て、どのフィールドが対象なのかを指定するわけだ。


スクリプト自体やっていることは…

スクリプト引数でパスされたフィールド名からフィールド内容を引っ張り出して GetField でグローバル格納のテキストフィールドにフィールド設定している。

そのうえで、そのグローバル格納のテキストフィールド をコピーしている。[注]

最後のスクリプトステップは [フィールドへ移動]で、フィールド指定無しである。

これはどこかのフィールドに入った後に、フォーカスをはずす定石ね。


[注] コピーのスクリプトステップはコピーされるフィールドが当該レイアウトに存在する必要がある。(ただし普段はじゃまにならないように)、[次の場合にオブジェクトを隠す] で True を指定しておくという手が使える。


これで、スクリプト引数に GetFieldName を使ってフィールド名を渡してやることで、

コピースクリプトを D.R.Y. に使い回せる。


「編集(変更)させたくないけどコピーはさせたい」というニーズに対するもうひとつの解は、当該フィールドの OnObjectModify あたりに…

レコード/検索条件復帰 [ ダイアログあり: オフ ]

のスクリプトを割り当てることだろう。

振る舞いは、前者(フィールド値をコピーする汎用スクリプト)と、後者では少し異なる。後者はフィールド値の一部をコピーすることもできるが、選択してコピーと2手間かかるのに対し、前者はワンクリックでフィールド値全体がコピーできる。

0コメント

  • 1000 / 1000