パフォーマンスを考慮したデータの構造化

パフォーマンスを考慮したデータ連結オプション

データソースに連結されているフォームの場合は、フィールドやサブフォームのようなフォームオブジェクトにデータ要素を関連付けることができます。この関連付けをデータ連結と呼びます。表示されるデータの量に応じて縮小または拡大されるオブジェクトを選択できます。

フォームのレンダリング時、同じ結果になるとしても、データ連結の定義には多くの方法があります。ただし、フォームオブジェクトとそのデータ要素との関係をより明確に定義するほど、Forms はデータ連結をより効率的に処理できます。

次の図に示しているフィールドの連結例では、フォーム内の 2 つのフィールドオブジェクトがデータ要素に連結されています。フィールドオブジェクトに複数のインスタンスとデータが存在するので、連結があいまいです。フォームのレンダリング時、各オブジェクトの n 番目のオカレンスを、対応するデータの n 番目のオカレンスに一致させることが必要なので、そのための処理が増えます。

フルサイズのグラフィックを表示
フィールドの連結(number と quantity)

次の図に示しているサブフォームの連結例では、オブジェクトをグループ化することによって、フォームのレンダリング処理を単純化しています。サブフォームはデータ内の繰り返しグループに連結され、あいまいな連結が解消されています。この連結では、最初のグループに対してのみ評価が行われ、後続の繰り返しグループに対しての再評価は不要です。

フルサイズのグラフィックを表示
A.
フィールドの連結(number と quantity)

B.
サブフォームの連結

サブフォームを使用すると、サブフォームをデータ要素に連結せずに、オブジェクトをグループ化して整理できます。データをマージするときに、Forms がサブフォームのデータ要素を検索しないようにするには、サブフォームのデータ連結の種類をデフォルト値の「標準」から「なし」に変更します。

パフォーマンスを考慮したデータ構造の評価

データ構造がパフォーマンスにどのように影響するかを実際に試してみるには、フィールドの表示 / 非表示を切り替えるのが 1 つの手段です。

amountOwed データ要素の値が 0 より大きい場合のみ、メッセージを表示するとします。1 つ目の方法では、スクリプトを使用して、amountOwed の値を調べ、このデータ要素の値に応じて、メッセージフィールドの表示 / 非表示プロパティを変更します。

2 つ目の方法では、データをサブフォームに連結します。結果は同じですが、データをサブフォームに連結する方法のほうがデータをフィールドに連結する方法よりも効率的です。ここでは、status 要素をデータ構造に追加し、この要素をサブフォームに連結しています。サブフォーム内には、メッセージフィールドと amountOwed フィールドがあります。サブフォームの最小値が 0 に設定され、status 要素が存在する場合のみ、メッセージが表示されます。

データコンテキストで、status ノードをデータファイルに追加するかどうかの判断は、値が 0 より大きい場合のみ、サブフォームの生成時に行われることが必要です。この手法は、サブフォームがデータコンテキストデザインで必要かどうかを判断するためのロジックを提供します。