クライアント データセットでの内部計算フィールドの使用
計算値の表現 への移動
他のデータセットでは、レコードが変更されたり、ユーザーが現在のレコードのフィールドを編集するたびに、アプリケーションで計算フィールドの値を計算する必要があります。それは Data.DB.TDataSet.OnCalcFields イベントのハンドラで行われます。
それでもかまいませんが、クライアント データセットでは、計算値をクライアント データセットのデータに保存することにより、計算フィールドを再計算しなければならない回数を最小限に抑えることができます。計算値がクライアント データセットに保存される場合でも、ユーザーが現在のレコードを編集すると、やはり計算値の再計算が必要ですが、アプリケーションでは現在のレコードが変更されるたびに値を再計算する必要はありません。計算値をクライアント データセットのデータに保存するには、計算フィールドではなく内部計算フィールドを使用します。
内部計算フィールドは、計算フィールドと同様に、OnCalcFields イベントのハンドラで計算されます。ただし、クライアント データセットの State プロパティを確認することにより、イベント ハンドラを最適化できます。State が dsInternalCalc の場合は、内部計算フィールドを再計算する必要があります。State が dsCalcFields の場合は、通常の計算フィールドを再計算するだけでよいのです。
内部計算フィールドを使用するには、クライアント データセットを作成する前に、フィールドを内部計算フィールドとして定義する必要があります。それを行うには、永続フィールドを使用するかフィールド定義を使用するかによって、次のいずれかの方法を用います。
- 永続フィールドを使用する場合は、フィールド エディタで InternalCalc を選択することにより、フィールドを内部計算フィールドとして定義します。
- フィールド定義を使用する場合は、該当するフィールド定義の InternalCalcField プロパティを True に設定します。
メモ: 他の種類のデータセットでも、内部計算フィールドを使用します。ただし、他のデータセットでは、これらの値の計算は OnCalcFields イベントのハンドラでは行われません。代わりに、BDE またはリモート データベース サーバーにより自動的に計算されます。