IBDataSet Aggregate
IBDataSet Aggregate
IBDataSet Aggregate Özelligi Varm1 Nasil Çalismakda.Bu konu Hakkinda arkadaslardan bilgi bekliyorum.
IBDataSet Aggregate
IBClientDataSet sum(kg) yazarak , Toplam Aliyordum. IBClientDataSet ile bu isi sorunsuz yapabiliyordum.
Tam olarak Yapmak Istedigim:
hem toplam alip hemde toplam aldigim kayitlari dbgrid içinde gösteriyordum.
bu konu hakkinda bilgisi olan arkadaslardan yardimlariniz bekliyorum.
forum kurallarini okudum , gerekli kurullara uyacagim ama biraz acemilik var kusara bakmayin.
Tam olarak Yapmak Istedigim:
hem toplam alip hemde toplam aldigim kayitlari dbgrid içinde gösteriyordum.
bu konu hakkinda bilgisi olan arkadaslardan yardimlariniz bekliyorum.
forum kurallarini okudum , gerekli kurullara uyacagim ama biraz acemilik var kusara bakmayin.
IBDATASET 'de yapmak istedigim..
tesekkurler ,,, ama benim yapmak istedigim takip eden toplamlar degil.
tek ve net bir toplam.
öRNEK : asagida dbgrid içinde gözükmesi gereken listesini verdim.
Toplam ' in dgrid içinde gözükmesi önemli degil ,
önemli olan bunlarin hepsini bir IBDATASET 'de yapmak istiyorum.
KODU---ADI------KG
10.10 BOYA 150,00
10.11 BOYA 200,00
10.12 BOYA 250,00
10.13 BOYA 550,00
TOPLAM : 1.1150 KG
Bu konu ile bilgisi olan arkadaslari bekliyorum..
tek ve net bir toplam.
öRNEK : asagida dbgrid içinde gözükmesi gereken listesini verdim.
Toplam ' in dgrid içinde gözükmesi önemli degil ,
önemli olan bunlarin hepsini bir IBDATASET 'de yapmak istiyorum.
KODU---ADI------KG
10.10 BOYA 150,00
10.11 BOYA 200,00
10.12 BOYA 250,00
10.13 BOYA 550,00
TOPLAM : 1.1150 KG
Bu konu ile bilgisi olan arkadaslari bekliyorum..
yöntem Güzel ama çok yavas.
benim tablomda 850.000 kayit var.
bu yöntemle Tamaminin toplamini alindigimda
select alan1,alan2,(select sum(kg) from tablom) from tablom
makine tikaniyor.
select sum(kg) from tablom yöntemiyle aldigimda. hiz artiyor ama yeterli degil.
Aggregate yöntemini IBClientDataset Kullandigimda gayet güzeldi.
Not: 850.000 kayit her birinin pesinden toplam gelmesi bana göre yanlis.
benim tablomda 850.000 kayit var.
bu yöntemle Tamaminin toplamini alindigimda
select alan1,alan2,(select sum(kg) from tablom) from tablom
makine tikaniyor.
select sum(kg) from tablom yöntemiyle aldigimda. hiz artiyor ama yeterli degil.
Aggregate yöntemini IBClientDataset Kullandigimda gayet güzeldi.
Not: 850.000 kayit her birinin pesinden toplam gelmesi bana göre yanlis.
çok dogru 850.000 kayit bir anda almak gereksiz ve client/server kuralina aykiri.
Ama program gelistirdigim firmanin 1 aylik üretim girislerin toplami 850.000 bin almassa bile 500.000 kadar kayit var.
Bu gibi bir durumda 6 aylik bir rapor istenildiginde
(örn. 6 aylik boya harcamasi nedir ? ) sadece toplama ihtiyacim oluyor , grid icinde göstermesem bile toplam sart). simdilik cözüm procedure
ama ilginçtir IBClientDataSet Bunu Çok KISA Bir sürede yapiyor.
IBDataSet ile IBClientDataSet arasindaki bu fark nedendir.
Sizce IBDataSet 'mi IBClientDataSet
IBClientDataSet 'le ben fazla ugrasmadim ama kullandigim kadariyla IBDataSet Yaptiklarin tamamini yapiyor.
Ama program gelistirdigim firmanin 1 aylik üretim girislerin toplami 850.000 bin almassa bile 500.000 kadar kayit var.
Bu gibi bir durumda 6 aylik bir rapor istenildiginde
(örn. 6 aylik boya harcamasi nedir ? ) sadece toplama ihtiyacim oluyor , grid icinde göstermesem bile toplam sart). simdilik cözüm procedure
ama ilginçtir IBClientDataSet Bunu Çok KISA Bir sürede yapiyor.
IBDataSet ile IBClientDataSet arasindaki bu fark nedendir.
Sizce IBDataSet 'mi IBClientDataSet
IBClientDataSet 'le ben fazla ugrasmadim ama kullandigim kadariyla IBDataSet Yaptiklarin tamamini yapiyor.
evet connet essasinda çok ciddi bir bekleme söz konusu ama baglantidan sonra datalar havada uçusur gibi hizli , fakat PacketRecortd özelligini -1 birden örn: 100 veya 10 veya 1 yaptigin zaman IBDataSet Hizina Ulasiyor.
Süreler :
850.000 kayit..
2 sn tamami ekrana geliyor.
Aggregates özelliginde ki herhangi bir islem varsa buda hesaplanarak
Göstermis Oldugun fieldbyname özelligine geliyor.
Mesala Bir grid icinde 150 kayit var. TOPLAMLAR HESAPLANMIS BIR SEKILDE fieldbyname geliyor , ben bu grid üzerinde bir filitre çalistiriyorum örn: adi = cem 'dedigimde herhangi bir islem yapmam gerek kalmadan toplam otomatik aliniyor.
IBDATASET Bu islemdi yapamadim Sorun'da aslinda bu galiba.
Süreler :
850.000 kayit..
2 sn tamami ekrana geliyor.
Aggregates özelliginde ki herhangi bir islem varsa buda hesaplanarak
Göstermis Oldugun fieldbyname özelligine geliyor.
Mesala Bir grid icinde 150 kayit var. TOPLAMLAR HESAPLANMIS BIR SEKILDE fieldbyname geliyor , ben bu grid üzerinde bir filitre çalistiriyorum örn: adi = cem 'dedigimde herhangi bir islem yapmam gerek kalmadan toplam otomatik aliniyor.
IBDATASET Bu islemdi yapamadim Sorun'da aslinda bu galiba.
Bildiğim kadarıyla Delphi 7'de ibclientdataset yok. Siz de bunu kullanmak istiyorsunuz. Yanlız clientdataset bütün veriyi ram'e fetch ettiği için fazla kayıtta ciddi bir ram tüketimi ortaya çıkabilir. Bunu packetrecord propertysini değiştirerek fetch edeceği satır miktarını ayarlayarak aşabilirsiniz belki, ancak o zaman da dediğin gibi IBDataset'ten pek de bir farkı kalmaz.
Bunu aşabilmenin 3 yolu var. Tercih sırama göre:
1-Server tarafında bir view veya SP oluşturarak toplamı almak.
2-IBDataset'i FetchAll yapıp, toplamı bellekte calculatedfield ile oluşturmak.
3-ClientDataset kullanıp bunu DatasetProvider ile IBDataset'ine bağlamak.
Bunu aşabilmenin 3 yolu var. Tercih sırama göre:
1-Server tarafında bir view veya SP oluşturarak toplamı almak.
2-IBDataset'i FetchAll yapıp, toplamı bellekte calculatedfield ile oluşturmak.
3-ClientDataset kullanıp bunu DatasetProvider ile IBDataset'ine bağlamak.
toplamlar bir sekilde halletminin yollari farkli sekillerde bulabiliyoruz fakat
Client / Server Mimarisi.
Benin bir önceki projelerimde 1 server / 1 client vardi.Simdi IBDataSet ile bu yöntemi uygulayamadim. DCOM kullaniyordum.
Orn: ClientDataSet1 remoteserver özelligine server dosyasini bulundugu
yeri göstererek baglanti kuruyordum , ama birde server için program yazmam gerekiyordu.Server 'programinda her türlü canli sorgulari yaratarak client'e ClientDataSet1.ProviderName özelligiyle aliyordum.
Bu Tip Uygulamalarda Hiç Bir problemin yoktu.
IBDataSet Gecince :
1- SERVER programina gerek kalmadi gibi gözükdü. DOGRUMUDUR sizce.
Böyle Bir uygulama yaptinizmi yaptiysaniz dogru olan uygulama size göre hangisidir.
Client / Server Mimarisi.
Benin bir önceki projelerimde 1 server / 1 client vardi.Simdi IBDataSet ile bu yöntemi uygulayamadim. DCOM kullaniyordum.
Orn: ClientDataSet1 remoteserver özelligine server dosyasini bulundugu
yeri göstererek baglanti kuruyordum , ama birde server için program yazmam gerekiyordu.Server 'programinda her türlü canli sorgulari yaratarak client'e ClientDataSet1.ProviderName özelligiyle aliyordum.
Bu Tip Uygulamalarda Hiç Bir problemin yoktu.
IBDataSet Gecince :
1- SERVER programina gerek kalmadi gibi gözükdü. DOGRUMUDUR sizce.
Böyle Bir uygulama yaptinizmi yaptiysaniz dogru olan uygulama size göre hangisidir.
belki ben yapiyi tam olarak anlayamadim , yada anlatmak istedigimi anlatamadim.
ClientDataSet ' Componettinde server bulundugu yeri girebilecegim bir combobox var IBDataSet'de Bu Yok, provider taniticagim bir yer yok.
Ama Master/Detial combobox Yok diyebilirsin.
Server programin oldugu yeri nasil tanitacagim. DCOM IBDataSet'le birlikte kullanamiyorumki.
ClientDataSet ' Componettinde server bulundugu yeri girebilecegim bir combobox var IBDataSet'de Bu Yok, provider taniticagim bir yer yok.
Ama Master/Detial combobox Yok diyebilirsin.
Server programin oldugu yeri nasil tanitacagim. DCOM IBDataSet'le birlikte kullanamiyorumki.