calcfields alanlar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
uykumodunda
Üye
Mesajlar: 6
Kayıt: 03 Kas 2023 12:45

calcfields alanlar

Mesaj gönderen uykumodunda »

Merhabalar; bir cx gridim var ve bu gridde de 4 tane (s1,s2,s3,s4 ) hesaplamalı alalarım mevcut (calcfield). söyle ki s1 alanı koşulllu bir procdure sonucundan ,s2,3,4 ise başka precuderden hesaplamalı olarak getiriliyor. fakat şöyle bir durum var. bu calculat evente herbir satır için 4 kere girdiği için neredeyse bir satırı 1,5 2 saniyede getiriyor. buda yavaşlık demek oluyor. (5 satır 5x4=20 kere bu evente giriyor. buda en az 5-7 saniye). bunun için nasıl bir yol izliyebilirim. bu evente satır bazlı bir kere girip hepsini aynı anda yapabilir miyim.
Çok sevmekte yetmiyor bazen...
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: calcfields alanlar

Mesaj gönderen ertank »

Merhaba,

Eğer TDataSet.OnCalcFields olayını kullanıyorsanız bu olay sadece veri değişikliğinde tetiklenir. Siz veri girişini aynı grid üzerinden mi yaptırıyorsunuz?

Benim tahminim sizin calculated event kodunuzun performansında sorun olduğu yönünde. Milisaniye seviyesinde saat bilgisi ile basit bir loglama yaparak 4-5sn süren işlemin hangisi olduğunu bulmanız mümkün olabilir. Ardından yavaş çalışan prosedür(ler) ile ilgili optimizasyon mümkün mü inceleyebilirsiniz.

Eğer tek sefer OnCalcFields olayı tetiklenmesi benim için yeterli diyorsanız bunu kendiniz kontrol etmelisiniz. Mesela hesap yapılacak değerlerde (girdi değerler) değişiklik yok ise hesaplama yapmayın. Sonuç aynı olacaktır.
uykumodunda
Üye
Mesajlar: 6
Kayıt: 03 Kas 2023 12:45

Re: calcfields alanlar

Mesaj gönderen uykumodunda »

bir rapor sayfası düşünelim. bu raporun herbir satırı için miktar, fiyat, bakiye vb. 4 farklı işlem için farklı procedurlere parametreler gönderilip ilgili calc hücreye veri çekeceğim.
Çok sevmekte yetmiyor bazen...
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: calcfields alanlar

Mesaj gönderen ertank »

Merhaba,

Bu işlemi neden uygulama kısmında yapmaya çalışıyorsunuz? Sorgunuzu değiştirerek değerler hesaplanmış olarak sonuç hazırlayın. Tüm işlem veritabanı içinde yapılacağı için performansı daha iyi olacaktır. Uygulama-veritabanı arası sürekli veri alış-verişi kalmayacaktır
Cevapla