フィールドを計算する

提供: RAD Studio
移動先: 案内検索

データセットの理解:インデックス への移動


フィールド エディタを使用して、データセットの計算フィールドを定義することができます。データセットに計算フィールドがある場合、Data.DB.TDataSet.OnCalcFields イベント ハンドラで、それらのフィールドの値を計算するためのコードを用意します。

AutoCalcFields プロパティは、OnCalcFields がいつ呼び出されるかを決定します。AutoCalcFieldsTrue の場合、OnCalcFields は次のときに呼び出されます:

  • データセットが開かれた
  • データセットが編集モードになった
  • レコードがデータベースから抽出された
  • フォーカスがあるビジュアル コンポーネントから別のコンポーネントへ、またはデータ対応グリッド コントロールのある列から別の列に移り、現在のレコードが編集された

AutoCalcFieldsFalse の場合、レコード内の個々のフィールドが編集されても(上の4番目の状態)、OnCalcFields は呼び出されません。

警告: OnCalcFields は頻繁に呼び出されるため、これに記述するコードは簡潔でなければなりません。また、AutoCalcFieldsTrue の場合、OnCalcFields は、データセット(または、マスタ/詳細関係の一部である場合にリンクされたデータセット)を修正するアクションを実行してはいけません。再帰を引き起こす可能性があります。たとえば、OnCalcFieldsPost を実行するとします。AutoCalcFieldsTrue の場合、OnCalcFields は再び呼び出され、別の Post 呼び出しを発生され、それが繰り返されます。

OnCalcFields が実行されると、データセットは dsCalcFields モードに入ります。この状態では、ハンドラが編集するよう設計されている計算フィールド以外のレコードへの変更、追加は抑制されます。他の変更を制限するのは、OnCalcFields が、計算フィールドの値を得るために他のフィールドの値を使用するためです。それら他のフィールドへの変更は、さもなければ、計算フィールドへ入れる値を不正なものにしてしまいます。OnCalcFields が終了したのち、データセットは dsBrowse の状態に戻ります。

関連項目