Kayıt sayısını bulamıyorum.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Kayıt sayısını bulamıyorum.

Mesaj gönderen palandoken »

arkadaşlar kod aşağıdaki gibi

Kod: Tümünü seç


   with IBQuery1 do
    begin
       Active:=True;
       SQL.Clear;
       SQL.Add('Select * from Bilgi');
       SQL.Add('Where (il =:A1) and (ilce =:A2) and (Kurum =:A3)');
       ParamByName('A1').AsString:=il.Text;
       ParamByName('A2').AsString:=ilce.Text;
       ParamByName('A3').AsString:=Kurum.Text;
       sql.add('Order By Kurum ASC');
       Open;
       Label5.Caption:='Kayıt Sayısı   :   '+IntToStr(RecordCount);
    end;
Bilgi tablosunda 1000 kayıt var.yukarıdaki sorgu sonucunu DBGrid'de listeliyorum.Sorgu sonucu dönen kayıt sayısı mesela 200 olsun.Fakat o an DBGrid'de görünen kayıt sayısı 15 ise Label5 ' e kayıt sayısını 15 yazıyor.Halbuki sorguda bulunan kayıt sayısı 200.

Aynı kod Paradox ve Query bileşeni ile sorunsuz çalışıyor.200 kayıt bulduysa ve DBGrid ' de 15 kayıt görünse bile bulduğu kayıt sayısını yazyor.Yani Label5 ' e 200 yazıyor.

Bu sorunu nasl halledebilirim.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Active := True; sanırım sehven/yanlışlıkla yazıldı. Her nekadar SQL.Clear; DataSet i kapatsa da Active := False; ile kapatılabilir. IBQuery.FetchAll; ile tüm kayıtları çekebilirsiniz. Bu FetchAll; işi yakın zamanda epey bir konuşulmuştu. Daha garanti bir yöntem ise ayrı bir sorgu ile;

Kod: Tümünü seç

select count(*) from tablo where koşul
şeklinde kayıt sayısını öğrenebilirsiniz. Burada önemli bir konu; where işleminden sonra seçilen kayıt kaç tane ise onu görürsünüz. Tablodaki tüm kayıtları değil :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

rsimsek abi ilgin için teşekkürler.

Ben Active := True ' yu bilerek kullanıyorum.Ama mesajına göre yanlış yapıyorum galiba.Yanlışsa bir daha kullanmam.Acemiyim kusuruma bakma.

IBQuery1.Fetchall komutunu denedim ama değişen birşey olmadı.Bu komutu Open ' dan hemen sonra kullandım.Acaba kullandığım yermi yanlış?Ayrıca Fetcall komutu tablodaki tüm kayıtlarımı yoksa sorgu sonucu bulunan kayıtlarımı ifade ediyor?

select count(*) from tablo where koşul

bundan sonra sorgu sonucu bulunan kayıt sayısını bir labele nasıl aktarıcam?Kod nasıl olmalı?

Yukarıdaki kodları sorunumu çözecek şekilde düzenlemeni rica etsem çok şey mi istemiş olurum?
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Query komponenti ile oluşturduğunuz bir dataset üzerinden recordcount özelliği ile kayıt sayısını almayın ve dahi bu rakama zaten güvenmeyin. Zira Query componentinin hızlı çalışmasındaki espri de kayıtların tamamını çekmemesinden kaynaklanıyor. Tamamı çekilmemiş kayıtların kaç adet olduğunu da bilemez bu yüzden... Recep abinin dediği gibi bütün kayıtları çekmek için Fetchall yöntemi kullanılabilir fakat bu da ihtiyacı düşününce gereksiz bir işlem olur... Yani bu şuna benziyor... 100 metre odedeki bir kalabalığın kaç kişi olduğunu öğrenmek için hepsini yanınıza çağırıp saymaya gerek yok. İçlerinden biri kaç kişi olduklarını sayıp gelip size soylesin ;)

Yani asıl datasetinizi açmadan once isterseniz aynı Query componenti ile veya başka bir Query componenti ile kayıt sayısını aşağıdaki gibi bir kod ile ogrenip ondan sonra asıl kullanacağınız dataseti ayrıca açın...

Kod: Tümünü seç

  with IBQuery1 do
    begin
       SQL.Clear;
       SQL.Add('Select Count(*) as KAYIT_SAYISI from Bilgi');
       SQL.Add('Where (il =:A1) and (ilce =:A2) and (Kurum =:A3)');
       ParamByName('A1').AsString:=il.Text;
       ParamByName('A2').AsString:=ilce.Text;
       ParamByName('A3').AsString:=Kurum.Text;
       Open;
       Label5.Caption:='Kayıt Sayısı   :   '+IntToStr(FieldByname('KAYIT_SAYISI'));
    end;
bu yontemde biraz daha fazla kod var. Lakin kayıt sayısının doğru geldiğinden emin olabileceğiniz ve en hızlı bir şekilde netice alabilmeniz için başka çare yok...

Kolay gelsin.....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

fahrettin yazdı: 100 metre odedeki bir kalabalığın kaç kişi olduğunu öğrenmek için hepsini yanınıza çağırıp saymaya gerek yok. İçlerinden biri kaç kişi olduklarını sayıp gelip size soylesin
abi daha iyibir benzetme olamazdı heralde :lol: :D :D :D
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

palandoken yazdı:rsimsek abi ilgin için teşekkürler.

Ben Active := True ' yu bilerek kullanıyorum.Ama mesajına göre yanlış yapıyorum galiba.Yanlışsa bir daha kullanmam.Acemiyim kusuruma bakma.
...
Kusura falan niye bakayım :lol: Sadece hatayı düzeltmek için belirtmiştim. Bu Active := True; nun burada gereksiz kullanılması yanında eğer IBQuery nin SQL inde farklı bir sorgu varsa gereksiz yere tekrardan onun da işletilmesini sağlamış olursun :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Ottoman

Mesaj gönderen Ottoman »

VERİTABANI.......GEÇİCİ HAFIZA...........ANA BİL............İSTEM.BİL.
||||||||......................||||||||...................||||||||................||||||||
IBDSet1.Open.....IBDSet1.Fetchall........Tablo................Tablo
..........................Kursör'un bulunduğu........<Diğer işlemler>
..........................Yerden itibaeren.
..........................Geçici Hafızaya alır.
..................Genel Kullanıma Hazır hale gelir.

Hocam örnek ler çok;100 Metre ötedeki kalabalığı(işçiler,mühendisler,müdürler,vs..diyelim,Örnek ya..) benim kullanmam lazım! 100 metre öteden olmuyor!,yani tek tek çağırmakla..(Veritabanı=100 Metre ötedeki Topluluk,(Sürekli kaldıkları yer..))....hepsinin görevi ayrı Fabrikada mekanlarında olmaları lazım ki(Mekanları=Geçici Hafıza) .....fabrikaya girip iş üretsinler!(Fabrika=Tablo). hepsini birden fabrikanın içine sokamam çünkü görevleri icabı mekanlarında tutuyorumki(Geçici hafıza).işe göre iş taksimi yapsınlar,( istemci Bilg.)...Yoksa bu amcamlar işi aksatır ,Niye 100 metre ötede tutayım,(Sürekli kaldıkları yer.),100 metre öteye habire gidip gelirler,işi aksatırlar! Fabrikada mekanlarında tutarsam kontrol altına alırım! aksi halde!(Fason Çalışma olur)(Bu yüzden Bir Çok Fabrika çalışanı seçerken yakın semtlerden seçiyor,servisini ona göre ayarlıyor;Servis Fetchall) ...Yani Türkçesi "Fetchall" Komutu Kayıtları direk Tablomuza çekmez! Geçici hafızada tutar. Tabi sizin kursörü hedeflediğiniz yerden.(Network Ortamında idealdir.Karışıklığı,Kitlenmeleri önler)Zaten bu komut "onCreate" olayında bir seferde kullanılıyor,sürekli kullanılmıyor.Sadece Tablo ilk açılırken.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

@ottoman sanırım bi kargaşa var.
recep abinin bahsettiği işçiler bizim tablomuzdaki kayıtlar.
sizin işçilerin ne olduğunu ben anlayamadım.
"Fetchall" Komutu Kayıtları direk Tablomuza çekmez! Geçici hafızada tutar
Bu geçici hafıza dediğiniz yer tam olarak neresi oluyor acaba. Bana kullandığımız tablo bileşeni gibi geldi.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Ottoman

Mesaj gönderen Ottoman »

işcilerden örnek verilince öyle oldu sanırım....
Geçici hafıza dediğim;
19) FETCHALL

Aktif kursörün olduğu pozisyondan itibaren dosyanın sonuna kadar olan tüm kayıtları getirir ve onları yerel olarak saklar.
procedure FetchAll;

Cachelenmiş güncellemeleri kullanırken network trafiğini düşürmek için kullanın. FetchAll ChecekBrowseMod' u(Eveeet Demekki bu komut buraya konumlanıyor!.püf noktası burası!...Vay beeee!!!!! olmuşlardan gideceğiz!) yapılan değişiklikleri kaydetmek için kullanır. Sonra kursörün bulunduğu yerden itibaren tüm kayıtları çağırır ve saklar.

Genellikle cache güncellenmeler aktif edildiklerinde görüntülenecek bilgi kadar veri çağrılır. her yeni getirme olayı yalnızca okunabilir bir transaction başlatır. Transferleri sağlamlaştırmak ve network trafiğini azaltmak (Burada VT'ye Sürekli giderek fazla yük binmemesi için diyor galiba!!!???Anlayana..Zaten (Trafik gibi) Kitlenmelerde bu yüzden oluşuyor.)için uygulama fetchall çağrısını kullanır.

NOT: Bu çağrıyı yapmak network ortamında aynı anda birden fazla kullanıcının aynı kayda ulaşmaya çalışması ve değişiklik yapmak istemesi yüzünden güvenilirlik ve kullanışlılık açısından sakıncalıdır.(Buna can kurban yeterki tek problemi bu olsun!,Yani "DeadLock" olayı)
Koyu yazılan yerler bize "Fetchall" ile ilgili gerekli bilgileri herhalde anlamamızı sağlar. Ama Forumlarda bakıyorum bu komut yanlış tanımlanıyor,(((((Lokantacı bakıyor Büyük bir topluluk kapıya dayanmış!Eyvah diyor,Bunları nasıl karşılayacağım,ama bakıyorki "fetchall" olmuşlar kapıda bekliyorlar!Sonra oh beee diyor!..şimdi onları 5 er 10 ar alıp karşılayabilirim !!!)))))Ne yalan söyleyeyim bende öyle sanıyordum ama araştırınca ki bu forumumuzun ilk tavsiyesi ki olumlu bir tavsiye ,"araştır,ara" arayan bulur misali ........
Şimdi Fetch Komutuna bakalım..(All Komutuyla birleşince yanıltıyor.)
FETCH evvelce oluşturulmuş bir göstericiyi kullanarak satırları çeker.
Bir gösterici FETCH tarafından da kullanılan ortak bir konuma sahiptir. Göstericinin konumu sorgu sonucunun ilk satırının öncesinde, herhangi bir satırında veya son satırının sonrasında olabilir. İlk oluşturulduğunda bir gösterici ilk satırın öncesine konumlanır. Satırlar çekildikten sonra gösterici en son alınan satıra konumlanır. FETCH'in satırları çekip çalışması durduğunda gösterici son satırın sonrasına ya da eğer geriye çekilmişse ilk satırın öncesine konumlanır. FETCH ALL göstericiyi daima son satırın sonrasına, FETCH BACKWARD ALL ise daima ilk satırın öncesine konumlandırır. (Burada son nokta koyuluyor!.)
NEXT (sonraki), PRIOR (önceki), FIRST (ilk), LAST (son), ABSOLUTE (mutlak), RELATIVE (göreli) biçimleri göstericiyi ilgili konuma taşıdıktan sonra tek bir satırı çeker. O konumda bir satır yoksa, sonuç boş olarak döner ve gösterici duruma göre ya ilk satırın öncesine ya da son satırın sonrasına konumlanır.
FORWARD (ileri) ve BACKWARD (geri) biçimleri, ileri ya da geri yönde belirtilen miktarda satırı çekmek için kullanılabilir. Gösterici son çekilen satıra konumlanmış olarak bırakılır (eğer miktar alınabilecek satır sayısından fazla ise, gösterici duruma göre son satırın sonrasına ya da ilk satırın öncesine konumlanır).
RELATIVE 0, FORWARD 0, ve BACKWARD 0 biçimlerinin hepsi gösterici hareket ettirilmeden o anki satırın çekilmesini sağlar, yani son çekilen satır yeniden çekilir. Bu, ancak, gösterici ilk satırın öncesinde ya da son satırın sonrasında değilse bir satırın çekilmesini sağlar; aksi takdirde, bir satır döndürülmez.

bu adresde çok güzel doyurucu bilgiler var..
SQL VE TQUERY (Mükemmel Bi dev Arşiv )
SQL VE TQUERY
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Bence de bir anlam kargaşası var ortada. FetchAll dediğinizde, oluşturmuş olduğunuz Query'nin sonucu Client'a yüklenir. Client'a yüklenir derken de Client'ın belleğine taşır.

Gönderdiğiniz alıntılar, Delphi'nin Helpinin çevirisi. CachedUpdates True durumundayken FetchAll derseniz, Cursor pozisyonundan itibaren (Tablo sonuna kadar) herşeyi client'ın belleğine çekersiniz. Yani bir seferde ne var ne yok getirirsiniz.

100,000,000 Kayıtlık bir tabloyu açtıktan sonra FetchAll deyip, bir kaydı güncelleyip ApplyUpdates, CommitUpdates yaparsanız, Boşu boşuna network trafiği yaratmış olursunuz.

Bu noktada (yazılanlardan anladığım kadarı ile) Fahrettin'in benzetmesi çok yerinde, Tek bir Sonuç döndürmek varken, topyekün çağırıp saymak biraz yanlış kullanım olur.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Ottoman

Mesaj gönderen Ottoman »

Hocam Benmi tersten okuyorum yoksa sizmi?
FetchAll Komutunun Kitapdaki anlamı bu?
SQL VE TQUERY (Mükemmel Bi dev Arşiv );19) FETCHALL

Aktif kursörün olduğu pozisyondan itibaren dosyanın sonuna kadar olan tüm kayıtları getirir ve onları yerel olarak saklar.
procedure FetchAll;

Cachelenmiş güncellemeleri kullanırken network trafiğini düşürmek için kullanın. FetchAll ChecekBrowseMod' u yapılan değişiklikleri kaydetmek için kullanır. Sonra kursörün bulunduğu yerden itibaren tüm kayıtları çağırır ve saklar.(Kayıtların hepsini tabloya yüklemez!!!Kullanmak için saklar!(ChecekBrowseMod'u kullanarak))

Genellikle cache güncellenmeler aktif edildiklerinde görüntülenecek bilgi kadar veri çağrılır. her yeni getirme olayı yalnızca okunabilir bir transaction başlatır. Transferleri sağlamlaştırmak ve network trafiğini azaltmak için uygulama fetchall çağrısını kullanır.

NOT: Bu çağrıyı yapmak network ortamında aynı anda birden fazla kullanıcının aynı kayda ulaşmaya çalışması ve değişiklik yapmak istemesi yüzünden güvenilirlik ve kullanışlılık açısından sakıncalıdır.
..Bir anlaşmazlık olduğu doğru!!Yukarıdaki kaynak sağlamdır.ve koyu olan kısım sizin dediğinizin tersini yazıyor.(Çünkü Benim sakalım yok).
Fetchall'ı Açalım ozaman;
Fetchall=ilk açılırken Kullanılır.(Oncreate,OnActive,olayında).(Siz gün boyu Tabloda ne işlem yaparsanız yapın VT'yi kapamadıktan sonra,kayıtlar hafızada saklıdır.).
Fetchall=ChecekBrowseMod'u kullanır.
Fetchall=Open komutundan farkı Open Tabloyu açar,FetcAll, bilahare kullanmak için Tüm Kayıtları(ChecekBrowseMod'u)kullanarak saklar.
Fetchall=Transferleri sağlamlaştırmak.
Fetchall=Network Trafiğini azaltmak.
Fetchall=Kursörün bulunduğu yerden itibaren tüm kayıtları çağırır(Yanlız tabloya değil"ChecekBrowseMod'u" kullanır.(burası kafa karıştırıyor.).
Fetchall=Güncellemelerde,(sürekli yapılan kayıt işlemleride),Karışıklığı önler.Tüm kayıtlar Hafızada saklı olduğu için VT'de kapı kapı dolaşılmaz.
Fetchall=Daha ne yapsın!...yazacak bir şey kalmadı.........
En son Ottoman tarafından 27 Ara 2006 08:53 tarihinde düzenlendi, toplamda 4 kere düzenlendi.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

O zaman sizin alıntınıza göre, 100,000 Kayıtlık bir tabloyu açıp FetchAll dediğinizde Client'a veri yüklenmiyor ise (ki böyle değil) sorunsuz bir şekilde Şak diye Fetch Edersiniz tüm kayıtları.

Bunu denemek için, şunu yapabilirsiniz. 100,000 Kayıtlık bir tablo oluşturun, sonra FetchAll deyin bakalım uygulama sizi ne kadar bekletecek ve belleği ne kadar işgal edecek.

O denemeden sonra göreceksiniz.

Dokumanda anlatılmak istenen şu. Eğer siz belirli bir veri kümesinde çok fazla insert update gibi bir takım şeyler yapıyorsanız, her seferinde DB'ye erişim yapmasın diye, CachedUpdates'i açarsınız ve Client, sizin veri kümenizi kendi belleğine çeker. Yani tüm bilgileri kendine aktarır. Daha sonra kullanıcı Server ile arasındaki ilişkiyi keser (kopartmaz ama siz Next, First, Last gibi Methodları Nesneniz için kullandığınızda, servera başvuruda bulunmaz. Neden? Çünkü gerekli veri kümesini kendine çekmiştir. Onlar üzerinde Edit, Post, Delete gibi methodları uygular.

Ne zaman siz ApplyUpdates ve CommitUpdates methodlarını çağırırsanız nesneniz için, o zaman Server'a derki, Bak Server, hani senden böyle böyle kriterlere uyan bir veri kümesi almıştım ya, işte bu gönderdiklerim onlardır. diyerek gönderir. Server'da eğer önceden Cache'lenmiş olan bu küme üzerinde bir başka kullanıcı bir değişiklik yapmadıysa, bu değişiklikleri kabul eder.

Eğer bir değişiklik olduysa, Kullanıcıya der ki "güncellemeye çalıştığınız veriler, siz çektiğinizden buyana değişikliğe uğradı, bunları güncelleyemem" diye clienta hata döndürür.

Bu sebeple, insanlar bu sorunlardan dolayı CahchedUpdates'i pek kullanmazlar. Bunu kullanmak için çok bilinçli bir şekilde Database'in dizayn edilmiş olması gerekir ve iş akışlarının da ve aynı zamanda da Transaction Islation'ların da doğru belirlenmiş olması gerekir ve kullanıcıların birbirlerini ezmeyeceği şekilde oluşturulması gerekir.

Bunların yanı sıra, Identity alanların da iyi tasarlanmış olması gerekir. Zira CachedUpdates olarak belirlenmiş bir TQuery nesnesi ile Identity Insert etmek zor birşeydir.

Neyse bunları ben öğrendiklerim ve tecrübelerimle açıkladım. Bazen yazılanlar asıl yazılmak istenenler olmayabilir. Sizin okumanız takdir edilecek bir şey. Bizler de okuyarak öğrendik, Tecrübelerle pekiştirdik.

Siz de deneyin.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Ottoman

Mesaj gönderen Ottoman »

Kuri_YJ Demişki;
her seferinde DB'ye erişim yapmasın diye, CachedUpdates'i açarsınız ve Client, sizin veri kümenizi kendi belleğine çeker. Yani tüm bilgileri kendine aktarır. Daha sonra kullanıcı Server ile arasındaki ilişkiyi keser (kopartmaz ama siz Next, First, Last gibi Methodları Nesneniz için kullandığınızda, servera başvuruda bulunmaz. Neden? Çünkü gerekli veri kümesini kendine çekmiştir. Onlar üzerinde Edit, Post, Delete gibi methodları uygular.
Demiş.(Burası doğru)
Burada da ;
cache güncellenmeler aktif edildiklerinde
diyor.ve akabinde;
görüntülenecek bilgi kadar veri çağrılır. her yeni getirme olayı yalnızca okunabilir bir transaction başlatır. Transferleri sağlamlaştırmak ve network trafiğini azaltmak için uygulama fetchall çağrısını kullanır.
.....devam ediyor.
Ayrıca Hocam Ben bu komutu (Network trafiğini hafifletmek için), bir Firmada ;1'i ana term.10 terminalde 2 sene sonra kullanmaya başladım.ve proğram şu anda tıkır tıkır çalışıyor,hiç bir sıkıntı yok aksine rahatlama var.
................................
Bayağı iyi bir gelişme!..Tablo yavaş yavaş ortaya çıkmağa başladı....Önceleri "fetchall" komutunun tüm kayıtların tabloya çekilip, şişiriliyor,çökertiliyor... havası yaratılıyordu,şimdi resim ortaya çıkmağa başladı!!!...iyi iyiiiiiii.
Size ayrıca teşekkür ediyorum! Kuri_YJ....
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Yazıda CachedUpdates'ten bahsediliyor. FetchAll'dan değil!

Bence yanlış anlamışsın @Ottoman. FetchAll her şartta, Query'den dönen sonucun hepsini client'a çeker. Bu da ağ üzerinde büyük bir yük getirir.
Ottoman

Mesaj gönderen Ottoman »

Tekrar Selamlar,
Bilinçli kullandıktan sonra Getirmez! Hemşerim!...........
FetchAll yaparsınız, 100 Kaydı, FetchAll yaparsınız 1,000,000 Kaydı. Yükte getirebilirsiniz, kolaylıkta (hafifletirsiniz de)

Yani tamamen bilinçli kullanıla alakalı bir konu. Ama insanlar burada konuşulanlardan topu topu iki sonuç çıkarakcaklar.

1. Fetchall network trafiğini azaltır
2. Fetchall network trafiğini arttırır.

Her ikisi de doğru :) Eğer senin de söylediğin gibi (alıntıların gibi) dikkatli kullanırsan network trafiğini azaltabilirsin. Ama benim de örneklediğimi gibi yaparsan (1 Kaydı Update için 1,000,000 Kaydı belleğe çekersen) o zaman da gerekrsiz network trafiği yaratırsın.

Yani her ne şekilde olursa olsun dikkatli kullanmak lazım.

Kolay Gelsin

Not : Bu Mesajı Ben Kuri_YJ Gönderdim ama nedense Ottoman'ın adına geldi. Sanırım alıntı yap dedim bu sebeple oldu.
En son Ottoman tarafından 28 Ara 2006 12:05 tarihinde düzenlendi, toplamda 8 kere düzenlendi.
Cevapla