2012-05-08 28 views
6

Hesaplanan alan üzerinde bir toplama alanı eklemek mümkün mü?TClientDataset'te hesaplanan bir alanı toplama

  • kimliği (autoincrement)
  • İsim (string)
  • Fiyat (şamandıra)
  • Miktar (tamsayı)
  • Toplam (tamsayı:

    varsayalım aşağıdaki alanları ile bir cd var) - hesaplanan alan - Fiyat * Adet

ve eklemek istiyorum Toplam sütunun toplamını toplamak için toplanır. Mümkün mü?

cevap

5

Evet, hesaplanan alanı bir InternalCalc alanına değiştirirseniz bu mümkündür. Hesaplama hala OnCalcFields olayında yapılır, ancak o alan için hesaplama yaparken, InternalCalc durumunu kontrol etmeniz gerekir.

+0

['Agrega alanları'] (http://edn.embarcadero.com/article/29272) nedir? Bu amaç için daha iyi görünüyorlar. – TLama

+3

@TLama, elbette SUM (Fiyat * Adet) ile bir toplama alanı oluşturabilirsiniz, ancak soru hesaplanan bir alan üzerinde nasıl bir toplu işlem yapılacağıydı. Bu sadece hesaplanan alanın FieldKind = fkInternalCalc olması durumunda çalışır. –

+3

Temel olarak değerlendirme dizisidir: InternalCalc alanları birleştirme ve ayırma işleminden önce kalsifiye edilir, böylece kümeler halinde ve bir dizin olarak kullanılabilir. Hesaplanan alanlar bundan sonra değerlendirilir. InternalCalc alanları sadece TClientDataSets'de desteklenir. –