event ve sorgulama

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
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

event ve sorgulama

Mesaj gönderen White Rose »

s.a.
Firebird Event kullandığım bir projede tetiklenen eventleri alıyorum, bir hareket dosyasında
yapılan her kayıttan sonra eventle algılayıp query ile sorgulama yapıyorum.
Ancak eventten sonra yapığım sorgulamada son hareket kaydını 2 defa görüyorum, bir önceki hareketi göremiyorum,
oysa hareket dosyası düzgün olarak kayıt yapıyor.

Örnek olarak:

Hareket kayıtları :
n-1 kayıt 'Ahmet evrakı parafladı'
n kayıt 'Ali imza bekliyor'

benim eventla yakalayıp query ile gördüğüm kayıtlar:

'Ali imza bekliyor'
'Ali imza bekliyor'

hareket kayıtlarında kayıttan sonra commitretaining yapıyorum.
transaction ayarları doğru.
ama sorgulamada eksik kayıt geliyor, acaba neden olabilir.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: event ve sorgulama

Mesaj gönderen Kuri_YJ »

Selamlar,

O anda Açık Olan Query nesnesini Refresh mi yapıyorsunuz yoksa Close Open mı yapıyorsunuz?

Rrefresh ederken Grid ile Query nesnesi arasında bir refresh sorunu yaşıyor olabilirsiniz, onu bir kontrol edin derim.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: event ve sorgulama

Mesaj gönderen White Rose »

query yi close-open yapıyorum hocam

Kod: Tümünü seç

     If EventName='YAZIHAR_EKLEME' Then Begin
        If Sorgu.Active Then Sorgu.Close;
        Sorgu.SQL.Text:='Select Y.YZL_KNO, Y.YZL_KONU, H.YZH_ACK, H.YZH_TAR, H.YZH_SAAT '+
                        'From YAZILAR Y, YAZIHAR H Where Y.YZL_KNO=H.YZH_KNO '+
                        'Order By H.YZH_TAR, H.YZH_SAAT';
        Sorgu.Open;
        Sorgu.Last;
        Lst_Islemler.Lines.Add('Evrak İşlemi : Kayıt No : '+
                               Sorgu.FieldByName('YZL_KNO').AsString +' -  Konusu : '+
                               Sorgu.FieldByName('YZL_KONU').AsString+' - '+
                               Sorgu.FieldByName('YZH_ACK').AsString +' - '+
                               Sorgu.FieldByName('YZH_TAR').AsString +' : '+
                               Sorgu.FieldByName('YZH_SAAT').AsString);
        Sorgu.Close;
        Lst_Islemler.Lines.Add(StringOfChar('-',115));
     End;
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: event ve sorgulama

Mesaj gönderen Kuri_YJ »

Sorguyu baştan sona bir dolaşın bakalım, (ekrana yazdırın manuel olarak) hala kayıt aynı mı ?
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: event ve sorgulama

Mesaj gönderen White Rose »

üstad showmessage ile de kontrol ettim,

aşağıdaki şekilde de kontrol ettim

If EventName='YAZIHAR_EKLEME' Then Begin
yaziharformu.yazihar.last;
showmessage(yaziharformu.yaziharYZH_ACK.text);
end;

triger kodu aşağıdaki şekilde

Kod: Tümünü seç

CREATE OR ALTER TRIGGER YAZIHAR_INS FOR YAZIHAR
ACTIVE AFTER INSERT POSITION 0
AS
begin
  /* Trigger text */
  post_event 'YAZIHAR_EKLEME';
end
sonuç yine aynı, hayret ediyorum bu duruma.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: event ve sorgulama

Mesaj gönderen Kuri_YJ »

Peki şimdi Connection'ı kapatıp tekrar açın ve sorguyu bu şekilde yineleyin.

Bakalım hala aynı mı getiriyor. Eğer connection'ı kapatıp tekrar açınca kayıtlar düzeliyorsa, o zaman Transaction Isolation Level ile ilgili bir sorun var demektir, Isolation Level'ı değiştirin Connection'ınızın (Dabase nesnesinin)

Bir de böyle deneyin bakalım.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: event ve sorgulama

Mesaj gönderen White Rose »

transaction'un isolationlevel ayarı ReadCommitted ve kayıttan sonra commitretaining yapıyorum. Ayrıca tableyi refresh yaptım yine olmadı, bu arada kullandığım component Devart ın InterBase DataAccessComponent
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: event ve sorgulama

Mesaj gönderen Kuri_YJ »

O zaman bir de IB componentlerle basit bir deneme yapın bakalım
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: event ve sorgulama

Mesaj gönderen White Rose »

IB componentlerle de yaptım üstad aynı sonucu veriyor... yani son kayıt iki defa geliyor
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: event ve sorgulama

Mesaj gönderen Kuri_YJ »

Peki gerçekten DB'de aynı kayıttan iki tane mi var? Yoksa kayıtlar farklı mı?
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: event ve sorgulama

Mesaj gönderen White Rose »

db de kayıtlar ayrı ayrı biri ali biri veli ama event sorgusundan gelen kayıtlar aynı 2 tane veli :duvar:
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: event ve sorgulama

Mesaj gönderen Kuri_YJ »

Sorunu başka yerde aramak lazım o zaman, şu anda benim aklıma gelenler bunlar. Ama denemelerinizde Connection'ı kapatıp açtınız mı? Yani, DB Nesnesini Connected := False ve Connectted := True yapıp denediniz mi?
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Re: event ve sorgulama

Mesaj gönderen aLonE CoDeR »

Tabloyu neden Last yapıyorsun? Onu kaldırıp dener misin bir de..
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: event ve sorgulama

Mesaj gönderen White Rose »

aLonE CoDeR yazdı:Tabloyu neden Last yapıyorsun? Onu kaldırıp dener misin bir de..
çünkü son kaydı almam gerekiyor. :)


arkadaşlar sorunu iki post arasına showmessage koyarak hallettim.
herkese teşekkürler.
Cevapla