fire bird vt de refresh sorunu.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

fire bird vt de refresh sorunu.

Mesaj gönderen meron06 »

İyi çalışmalar arkadaşlar.öncelikle çok kullanıcılı bi programda bir kullanıcının yaptığı değişiklikleri diğer kullanıcıların anında görebilmesi için forumdaki örnek lerden faydalandım.yaptığım işlemler şunlar.ilgili tablonun after post after edit ve after insertlerine triggerlar yazdım.trigger ım şu şekilde
AS
begin
post_event 'KURUMTANIMLARI_GUNCELLENDI';
end

daha sonra programımdan ibeventle bu değişikliklerin olduğunu algılayabiliyorum.asıl sorunum şu.bu değişikliklerden biri gerçekleşince ibquer1.refresh; komutunu çalışıtırıyorum.ama tablodaki değişiklikler görüntülenmiyor.ama ibquery i active false true yapınca listeleniyor.ama bu yöntem tablodaki kayıtların sayısı artınca ve tabloda sık kayıt girilince programı yavaşlatır diye düşünüyorum.(ibquery i sürekli açıp kapamak performans kaybı yapabilir diye düşünüyorum.).bu sorunu şöyle çözdüm .ibqueryi açıp kapamak yerine yada refresh etmek yerine şu kodu yazıyorum. ibquery1.filtered:=true;ibquery1.filtered:=false; yaparak boş bi filtreleme işlemi yapıyorum .bu işlem sonunda tüm değişklikler görüntülenebiliyor.(ha bu arada kayıt girme ve değiştirmeler yada silmede transactionu commitretaining yapıyorum).benim sorum üstadlar sizce bu yöntem doğrumu.query i kapatıp açmak mı yoksa boş bi filtereleme işlemi yapmakmı daha mantıklı .yardımlarınız için teşekkür ederim arkadaşlar.
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

Kod: Tümünü seç

procedure TIBQuery.SetFiltered(Value: Boolean);
begin
  if(Filtered <> Value) then
  begin
    inherited SetFiltered(value);
    if Active then
    begin
      Close;
      Open;
    end;
  end
  else
    inherited SetFiltered(value);
end;
zaten filtreleme yaptığında dataset ' in kapanıp açılıyo.
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

bunun başka bi yolu yokmudur .siz nasıl bi yol izliyorsunuz bu gibi durumlarda.kullanıcılara güncellenmiş kaydı nasıl görüntülüyorsunuz.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Senin yaptığın gibi dataet active false true yoluyla.Yavaşlama yapacağınıda sanmıyorum.Çünkü IBDataset tüm kayıtları çekmiyor.O yüzden fazla farketmeyeceğini düşünüyorum.Hem bundan başka yolu olduğunu da sanmıyorum.

Hem zaten refresh olayının altında da bu yokmu?
Cevapla