Claris FileMaker Pro 20.2で導入されたレイアウト計算について、さらに便利な活用方法について少し解説したいと思います。
レイアウト計算 のメリットをおさらい
レイアウト計算を使用すると冗長なフィールドやスクリプトを減らすことができ、開発においてソリューションのより効率的なメンテナンスが可能になります。また、ユーザの入力やデータの変更に動的に対応できる見栄えの良いレイアウトを作成することができます。
※レイアウト計算の詳しい機能については過去のブログをご参照ください
https://kotovuki.co.jp/archives/15793
レイアウト計算の結果を取得する
レイアウト計算 は表示に特化した機能ではありますが、フィールドのように計算結果を取得することもでき、その関数は以前から実装されています。
GetLayoutObjectAttribute ( オブジェクト名 ; 属性名 )
この関数を使用して計算結果を取得してみます。
<検証環境>
Claris FileMaker Pro 20.3.2.201
メニューから 挿入 > レイアウト計算… を選択
計算式の編集ウインドウが表示され、簡単な計算式を設定します。
作成したオブジェクトに「01」という名前を付けて、レイアウトを保存します。
データビューアで、先ほど置いたレイアウト計算が設定してあるオブジェクトに表示されている値を取得してみます。
GetLayoutObjectAttribute ( “01” ; “content” )
属性名を content に設定すると、計算結果を取得することができます。
GetLayoutObjectAttribute ( “01” ; “source” )
属性名を source に設定すると、式のソースを取得することができます。計算された結果を表示するだけでなく、値として取得することができます。
レイアウト計算を使って計算式内の文字数制限を回避する
フィールドオプションで設定できる計算式の文字数には制限があり、30000文字以内である必要があります。
Length ( “AAAA………” )
“AAAA………”の文字数が多い場合は式を設定することができず、式の評価ができません。
それに対してレイアウト計算では、30000文字以上のテキストが保存でき、計算の結果を取得することができます。
レイアウト計算 がブラウズモードで見えていないときは?
この レイアウト計算 のオブジェクトが「次の場合にオブジェクトを隠す」機能で非表示の状態であっても、値が取得ができます。また、表示範囲外にそのオブジェクトが設置してある状態でも同様に値が取得できます。ブラウズモードにおいて必ずしもレイアウトに表示されている必要はありません。
まとめ
レイアウト計算は表示だけでなく、計算結果も取得することができました。レイアウトに依存しますが、30000文字以上の計算式を評価することもできます。通常、スクリプトステップで30000文字ずつを変数にして連結利用したり、フィールドに値を入れて参照して評価したり、Base64エンコードされたデータなど文字数が多くなる場合には工夫が必要でしたが、このレイアウト計算とGetLayoutObjectAttributeの組み合わせで開発の選択肢が増えるかもしれません。