S.A
Daha önce Acces VT kullarak yazıdığım programı şimdi Firebirde VT ye aktarıyorum IBX bileşenleri kullnıyorum.
CARİ KARTLAR ve FATURA tablom var. Fatura tablosunda olması gereken Cari hesaplara ait adres,tel vb bilgiler lookup field ile Cari Kartlar tablosundan alınıyor.
Ancak firebirdde lookup alanlar yavaşlamaya sebeb oldu. Kodlara break point koyarak yavaşlamanın sebebini ararken şunu farkettim Fatura tablosunu open yaptığımda Cari kartlar tablosunu kayıtsayısı*LookupField adedince tarayıyor yani Scroll olayını gerçekleşiyor.
Tabi cari kartlar tablosunun after scroll ve before scroll olaylarında bazı kodlar var, if-then ile bu kodları by-pas etsem bile sonuçta program bu afterscroll ve beforescroll procedurelerine mutlaka bi uğrayıp merhaba diyor ve buda belli bir geçikmeye neden oluyor.
Ancak aynı işi Access VT ile ve ADO bileşenleri ile yaptığımda böyle bir scroll olayı tetiklenmiyor ve program daha hızlı açılıyordu.
Şimdilik datamodüle yenibir IBQuery nesnesi ile cari kartlar tablosunu sorguyla çektim ve fatura tablosonun lookupfiled alanlarını IBQuerye bağlayarak geçici bir çözüm buldum ancak ne kadar işgörür bilemiyorum.
sonuç olarak;
Fatura tablosunda select First 1 ile sadece son kaydı çağırmama rağmen lookup alanlara bakmak için Cari Kartlar tablosundaki tüm kayıtları neden tarıyor? (Kayıtsayısı*Lookup field adedince)
2-Lookup Fieldları firebirdde veritabanı tarafında yapamayız mı ? (Calculated field lar gibi)
yada başka bir çözümü var mı ?
İlgilenen arkadaşlara şimdiden tşk ederim.
Lookup Field problemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
s.a.
vt den kayıtları çekerken sp kullan.
fatura tablosu için faturalarigetir diye bir sp oluşturursun.
bu spye tarih,cariid fatura turu vs. parametreler vererek filtreleme işlerinide ototmatik olarak yaptırabilirsin.
kolay gelsin.
vt den kayıtları çekerken sp kullan.
fatura tablosu için faturalarigetir diye bir sp oluşturursun.
bu spye tarih,cariid fatura turu vs. parametreler vererek filtreleme işlerinide ototmatik olarak yaptırabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 61
- Kayıt: 14 Eki 2006 11:11
s.a
aslangeri arkadaşım, yazıklarını biraz daha açarmısın.
ben şöyle anladım bilmiyorum doğrumu anladım
SP olarak Fatura tablosu ile cari kartlar tablosunu join ile bağlayarak, carikartlar tablosundan bakmak istediğin alanları seç, böylece lookupfield da gerek kalmaz diyorsan böyle bi durumda join ile bağlantı olduğundan insert, edit, post işlemleri yapılamaz.
aslangeri arkadaşım, yazıklarını biraz daha açarmısın.
ben şöyle anladım bilmiyorum doğrumu anladım
SP olarak Fatura tablosu ile cari kartlar tablosunu join ile bağlayarak, carikartlar tablosundan bakmak istediğin alanları seç, böylece lookupfield da gerek kalmaz diyorsan böyle bi durumda join ile bağlantı olduğundan insert, edit, post işlemleri yapılamaz.

kayıtları çekmek için ibdataset kullan.
ibdataset in insertsql, modifysql delete sql propertylerini ayarlarsan insert te olur update de o delete de. yalnız çektiğin alanların idleriniide sp ile geriye döndürmelisin. sqlledede o alanları kullanmalısın.
ben kendim bizzat öyle yapıyorum.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 61
- Kayıt: 14 Eki 2006 11:11
bu baş belası lookup filedlarla ilgili bir adım daha ileri gidebildim.
çok aramama rağmen formda bulamamıştım
firebirdte fatura tablosuna ADRES adında Computed by alanı ekledim
ve bu alana aşağıdaki kodu yazarak Adres bilgisini CariKArtlar tablosundan baktırdım.
Adres alanının computed by ına yazılan kod:
delphi tarafında IBDataset ile fatura tablosunu çağırdım. Ancak Adres alanı read-only olduğu için, insert, delete, modify sql kodlarına Adres alanını eklemedim. ve programı çalıştırdığımda Fatura tablosuna girdiğim carikodun adres bilgisini getiriyor. buraya kadar iş tamam.
ancak Adres bilgisi commit yaptıktan sonra yükleniyor. oysa daha insert modundayken yüklemesini istiyorum.
onuda halletmenin bi yolunu buluruz inşallah.
çok aramama rağmen formda bulamamıştım
firebirdte fatura tablosuna ADRES adında Computed by alanı ekledim
ve bu alana aşağıdaki kodu yazarak Adres bilgisini CariKArtlar tablosundan baktırdım.
Adres alanının computed by ına yazılan kod:
Kod: Tümünü seç
((select carikartlar.adres from carikartlar where carikartlar.carikod=fatura.carikod))
ancak Adres bilgisi commit yaptıktan sonra yükleniyor. oysa daha insert modundayken yüklemesini istiyorum.
onuda halletmenin bi yolunu buluruz inşallah.
fields editorden alanın read only özelliğini iptal et.
tabloyu post etmeden önce alana carinin adını yazdır.
insert update sql lerinde bu alanı kullanmadığın için sıkıntı çıkmayacaktır.
tabloyu post etmeden önce alana carinin adını yazdır.
insert update sql lerinde bu alanı kullanmadığın için sıkıntı çıkmayacaktır.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim