cxGrid Master-Detail OnDetailExpandig Kullanımı (ÇÖZÜLDÜ)
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
cxGrid Master-Detail OnDetailExpandig Kullanımı (ÇÖZÜLDÜ)
Merhaba değerli üyeler,
cxGrid 6.42 sürümünü kullanıyorum , master-detail görünümlü listeleme yapıyorum, ancak Detail verisinin bulunduğu tablo çok büyük olduğu için cxGrid in varsayılan olarak sunduğu yapı olan detail dataset in tamamen çekilmesi noktasında ciddi performans sorunları yaşıyorum. DataModeController içinde "DetailInSQLMode" adında bir özellik var kullanımı ile ilgili açıklayıcı bir örnek bulamadım, ayrıca View in olayları arasında DataControlMode olayları altında OnDetailExpanding adında bir olayda var buralarda birşeyler yapılabilir gibi, yapmak istediğim kullanıcı detail i görmek için master kaydın artı tuşuna tıkladığı anda ilgili detail için bağlı Query ime sorguyu yazmak ve sadece expand edilen master row a lazım olan detail kayıtları DB den çekmek.
iyi çalışmalar.
cxGrid 6.42 sürümünü kullanıyorum , master-detail görünümlü listeleme yapıyorum, ancak Detail verisinin bulunduğu tablo çok büyük olduğu için cxGrid in varsayılan olarak sunduğu yapı olan detail dataset in tamamen çekilmesi noktasında ciddi performans sorunları yaşıyorum. DataModeController içinde "DetailInSQLMode" adında bir özellik var kullanımı ile ilgili açıklayıcı bir örnek bulamadım, ayrıca View in olayları arasında DataControlMode olayları altında OnDetailExpanding adında bir olayda var buralarda birşeyler yapılabilir gibi, yapmak istediğim kullanıcı detail i görmek için master kaydın artı tuşuna tıkladığı anda ilgili detail için bağlı Query ime sorguyu yazmak ve sadece expand edilen master row a lazım olan detail kayıtları DB den çekmek.
iyi çalışmalar.
En son vkamadan tarafından 30 Haz 2016 03:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: cxGrid Master-Detail OnDetailExpandig Kullanımı
Sana tavsiyem hiç uğraşma
2 grid kullan en hızlı ve kolay çözüm. Diğer çözüm illaki master detail olacaksa, VirtualTreeView kullanabilirsin. Open source dur ve çok hızlıdır. devex de her query yi değiştirdiğinde dataset değişti diye tekrar okumaya gidiyor vs gibi saçma sapan (bana göre tabi ) atlayıp zıplayıp duruyor. Grid mode da kullanamıyorsun oda dengeli çalışmıyor. Detail dataset te, master daki tüm şartlara uygun, tüm kayıtlar olmak zorunda. Sende sadece açılan master a ait detail kayıtlar gelsin diye, detail dataset e master ın key sini sql e ekliyeyim istiyorsun, ama cx bir üsteki master ın detayını nerden okumaya da çalışıyor, işte ozaman çarşı karışıyor
Ben eğer çok fazla kayıt olacaksa, ve özellikle kayıt girilecekse, yani edit vs olacaksa iki grid kullanıp dataset leri bağlamayı tercih ederim. yok illaki tek grid olacaksa, ve edit işlemleri olmama şartı koyarsam, ozamanda sql i birleştirip, group kullandırıyorum, sonuçta son kullanıcı için master-detail de bir group
2 grid kullan en hızlı ve kolay çözüm. Diğer çözüm illaki master detail olacaksa, VirtualTreeView kullanabilirsin. Open source dur ve çok hızlıdır. devex de her query yi değiştirdiğinde dataset değişti diye tekrar okumaya gidiyor vs gibi saçma sapan (bana göre tabi ) atlayıp zıplayıp duruyor. Grid mode da kullanamıyorsun oda dengeli çalışmıyor. Detail dataset te, master daki tüm şartlara uygun, tüm kayıtlar olmak zorunda. Sende sadece açılan master a ait detail kayıtlar gelsin diye, detail dataset e master ın key sini sql e ekliyeyim istiyorsun, ama cx bir üsteki master ın detayını nerden okumaya da çalışıyor, işte ozaman çarşı karışıyor
Ben eğer çok fazla kayıt olacaksa, ve özellikle kayıt girilecekse, yani edit vs olacaksa iki grid kullanıp dataset leri bağlamayı tercih ederim. yok illaki tek grid olacaksa, ve edit işlemleri olmama şartı koyarsam, ozamanda sql i birleştirip, group kullandırıyorum, sonuçta son kullanıcı için master-detail de bir group
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: cxGrid Master-Detail OnDetailExpandig Kullanımı
Merhaba @freeman35 öncelikle cevabınız için teşekkür ederim.
Soruyu foruma yazdıktan sonra araştırmalara devam ettim ve tatmin edici sonuca ulaştım , sonucu yazmak için başlığa girince de mesajınızı gördüm
Evet cxGrid in doğası biraz kendine has bağladığınız datasetlere müdehale ediyor neyse ki bize de sorduğu olaylar varmış
2 seviyeli master-detail yapı kurmam gerekti gerçi seviyenin bir önemi yok ,
müşteri hesaplarını , altında poliçelerini , her poliçe altında da ödeme planını gösteriyorum ,
öncelikle cxGrdi master-detail yapıyı bildiğimiz gibi kuruyoruz yani tüm datasetler açık ve tüm data çekilmiş olacak gibi Viewler üzerinde bağlantıları kuruyoruz.
film bundan sonra başlıyor ;
ilk olarak detail dataset imizin SQL cümlesine parametre yada parametreleri ekleyerek son şeklini veriyoruz
benim ki ;
Detail View in DataModeController altında yer alan DetailInSQLMode = True yaparak açıyoruz ve Detail View in Olayları arasında DataModeController altında yer alan OnDetailFirst olayında konuyu yönetiyoruz ;
ayrı bir grid kenara koyup detail dataseti ona da bağlayıp gerçekten sadece gereken kayıtların çekildiğinide gözlemledim.
iyi çalışmalar.
Soruyu foruma yazdıktan sonra araştırmalara devam ettim ve tatmin edici sonuca ulaştım , sonucu yazmak için başlığa girince de mesajınızı gördüm
Evet cxGrid in doğası biraz kendine has bağladığınız datasetlere müdehale ediyor neyse ki bize de sorduğu olaylar varmış
2 seviyeli master-detail yapı kurmam gerekti gerçi seviyenin bir önemi yok ,
müşteri hesaplarını , altında poliçelerini , her poliçe altında da ödeme planını gösteriyorum ,
öncelikle cxGrdi master-detail yapıyı bildiğimiz gibi kuruyoruz yani tüm datasetler açık ve tüm data çekilmiş olacak gibi Viewler üzerinde bağlantıları kuruyoruz.
film bundan sonra başlıyor ;
ilk olarak detail dataset imizin SQL cümlesine parametre yada parametreleri ekleyerek son şeklini veriyoruz
benim ki ;
Kod: Tümünü seç
select hes_kod , tarih , police_no , sirket_adi,poli_id from police where hes_kod=:hes_kod
Kod: Tümünü seç
procedure TForm1.cxGrid1DBTableView2DataControllerDataModeControllerDetailFirst(
Sender: TcxDBDataModeController; ADataSet: TDataSet;
const AMasterDetailKeyFieldNames: string;
const AMasterDetailKeyValues: Variant; var AReopened: Boolean);
begin
with (ADataSet as TMyQuery) do
begin
if ParamByName('hes_kod').Asstring = AMasterDetailKeyValues then
begin
First;
Exit;
end;
DisableControls;
try
Active := False;
ParamByName('hes_kod').Asstring := AMasterDetailKeyValues;
Active := True;
finally
EnableControls;
end;
AReopened := True;
end;
end;
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: cxGrid Master-Detail OnDetailExpandig Kullanımı (ÇÖZÜLDÜ)
ilk fırsatta bende deniycem, saolasın. Master lar üzerinde gezindiğinde performans yada görünümler nasıl ? ve print denedin mi?
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: cxGrid Master-Detail OnDetailExpandig Kullanımı (ÇÖZÜLDÜ)
@freeman35 , performansta normal tek level kullanımda olduğundan bir fark göremedim, 3 level yazdırma denedim ne görüyorsam aynen yazdırdım. tabi benim sürümde ExcelExport hiç bir detail i export etmiyor sadece ilk view i export ediyor bunu biliyordum önceden. her level i ayrı renklendirmek şart çünkü birbirne girmiş bir görüntü oluşuyor varsayılan sınırlar çok net belli olmuyor renklere mutlaka müdahale gerekiyor.
iyi çalışmalar.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: cxGrid Master-Detail OnDetailExpandig Kullanımı (ÇÖZÜLDÜ)
Bende v15 de denedim, başarılı demekki baya düzeltmişler elemanlar. senin kod ile ufak fark
print export vs denemedim bende performası nasıl olacak, gene atlayıp zıplayacakmı diye merak ettim, basit bir deneme yaptım. Ama nedendir bilmem öyle yapmışlar, gridmode=True ise event çalışmıyor.
Bayramdan sonra nasipse fırsat bulursam biraz daha denerim, mesela 2 parametre olursa nasıl olur birden fazla field ile bağ kurabiliyorsunuz, field isimleri arasına ";" koymanız yeterli. Tabi hem master hemde field tarafına.
Saolasın.
Kod: Tümünü seç
if ParamByName('hes_kod').Value = AMasterDetailKeyValues then
Bayramdan sonra nasipse fırsat bulursam biraz daha denerim, mesela 2 parametre olursa nasıl olur birden fazla field ile bağ kurabiliyorsunuz, field isimleri arasına ";" koymanız yeterli. Tabi hem master hemde field tarafına.
Saolasın.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
- hi_selamlar
- Üye
- Mesajlar: 523
- Kayıt: 05 May 2005 03:24
- Konum: DelphiTürkiye.COM
Re: cxGrid Master-Detail OnDetailExpandig Kullanımı (ÇÖZÜLDÜ)
Paylaşımlarınız için teşekkürler.
Herkes cahildir, bazi konularda.
Re: cxGrid Master-Detail OnDetailExpandig Kullanımı (ÇÖZÜLDÜ)
@freeman35 önemli bir detayda şöyle ,
detail datasetin SQL inin içinde ki parametre isimleri, master ın keyfiled isimleriyle aynı olmak zorunda. buna müdahele ettirmiyor.
bende master key hes_kod , detail tablomdaki ilişkili alanımda hes_kod ama mesela alanın adı "hesapkodu" olsaydı parametrem mutlaka select..... where hesapkodu=:hes_kod şeklinde olmalıydı.
kolay gelsin.
detail datasetin SQL inin içinde ki parametre isimleri, master ın keyfiled isimleriyle aynı olmak zorunda. buna müdahele ettirmiyor.
bende master key hes_kod , detail tablomdaki ilişkili alanımda hes_kod ama mesela alanın adı "hesapkodu" olsaydı parametrem mutlaka select..... where hesapkodu=:hes_kod şeklinde olmalıydı.
kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr