Commit olayı :) malesef...
Commit olayı :) malesef...
Selamlar..
Ben bu commit olayını hala yapamadım. Forumda bu konu çok konuşuldu.
Hepsini okudum. Adım adım yapıyorum yinede olmuyor. İlla query yi açıp kapamak gerekiyor.
Firebird 1.5,delphi6.0 ve interbase bileşenlerini kullanıyorum.
Transaction nesnesine çift tıklıklıyorum read commited işaretliyip transactionı active yapıyorum.
sonra bir ib query nesnesi ile kayıtları listeliyorum(Select * from HAMMADDE)
daha sonra başka bir query ile kayıt ekleme silme gibi işlemleri yapıyyorum aynen şöyle:
INSERT INTO HAMMADDE(ID_HAM,AD,MIKTAR,BIRIM) VALUES
(:ID,:A,:MIKTAR,:BIRIM)
daha sonra buna parametre gönderip kaydediyorum o da şu şekilde
KAYDET.Params[0].AsInteger:=strtoint(edit1.Text);
kaydet.Params[1].asstring:=edit2.text;
kaydet.Params[2].AsInteger:=strtoint(edit3.text);
kaydet.Params[3].AsString:=edit4.Text;
kaydet.ExecSQL;
kaydet.Transaction.CommitRetaining;
bu şekilde oluyor bir sorun yok ama programı açıp kapamadan yada
hammaddeler.Active:=false;
hammaddeler.Active:=true;
bunu yapmadan yeni eklediğim kayıt dbgrid üzerinde gözükmüyor.
dbgrid.refresh 'i de denedim ama faydasız.
Valla bu firebird'ü çok sevdim ama bu transection işi bi türlü olmadı.Acaba nerde hata yapıyorum
ya da unutuyorum .
Teşekkürler..
Ben bu commit olayını hala yapamadım. Forumda bu konu çok konuşuldu.
Hepsini okudum. Adım adım yapıyorum yinede olmuyor. İlla query yi açıp kapamak gerekiyor.
Firebird 1.5,delphi6.0 ve interbase bileşenlerini kullanıyorum.
Transaction nesnesine çift tıklıklıyorum read commited işaretliyip transactionı active yapıyorum.
sonra bir ib query nesnesi ile kayıtları listeliyorum(Select * from HAMMADDE)
daha sonra başka bir query ile kayıt ekleme silme gibi işlemleri yapıyyorum aynen şöyle:
INSERT INTO HAMMADDE(ID_HAM,AD,MIKTAR,BIRIM) VALUES
(:ID,:A,:MIKTAR,:BIRIM)
daha sonra buna parametre gönderip kaydediyorum o da şu şekilde
KAYDET.Params[0].AsInteger:=strtoint(edit1.Text);
kaydet.Params[1].asstring:=edit2.text;
kaydet.Params[2].AsInteger:=strtoint(edit3.text);
kaydet.Params[3].AsString:=edit4.Text;
kaydet.ExecSQL;
kaydet.Transaction.CommitRetaining;
bu şekilde oluyor bir sorun yok ama programı açıp kapamadan yada
hammaddeler.Active:=false;
hammaddeler.Active:=true;
bunu yapmadan yeni eklediğim kayıt dbgrid üzerinde gözükmüyor.
dbgrid.refresh 'i de denedim ama faydasız.
Valla bu firebird'ü çok sevdim ama bu transection işi bi türlü olmadı.Acaba nerde hata yapıyorum
ya da unutuyorum .
Teşekkürler..
Aslinda commit olayini yapmissiniz bence...
yani kayitlariniz ekleniyor fakat farkli iki bilesen ile kayıt ekleme ve kayıt izleme isini yaptiginiz icin. Kayıtları gosteren query'nin yeni bir kayıttan haberdar olması ve onu gostermesinin tek yolu kapatip tekrar acmaktir. Bunun tek istisnasi kayıt ekleme isini o query componenti uzerinden insert ve psot metodlarini kullanarak yapmaktır.
Dolayisiyla bir sorun yok su an sizin sistemde... Hatta soyle de emin olabilirsiniz... Kayit isini yapinca paralelde interbase tarafina gidip SQL explorer veya baska bir aracla kayıtlara baktıgınızda eklenmis oldugunu goreceksiniz zaten....
Kolay gelsin...
yani kayitlariniz ekleniyor fakat farkli iki bilesen ile kayıt ekleme ve kayıt izleme isini yaptiginiz icin. Kayıtları gosteren query'nin yeni bir kayıttan haberdar olması ve onu gostermesinin tek yolu kapatip tekrar acmaktir. Bunun tek istisnasi kayıt ekleme isini o query componenti uzerinden insert ve psot metodlarini kullanarak yapmaktır.
Dolayisiyla bir sorun yok su an sizin sistemde... Hatta soyle de emin olabilirsiniz... Kayit isini yapinca paralelde interbase tarafina gidip SQL explorer veya baska bir aracla kayıtlara baktıgınızda eklenmis oldugunu goreceksiniz zaten....
Kolay gelsin...
veritabanından sp ve triggerlar aracılığı ile güncelleme silme vb. işlemleri yapıyorum. ama Delphiden tabloyu açıp kapatmadan proje yapılan herhangi bir değişikliği görmüyor.
transectionu commitretraing ve tabloyu refresh yapıyorum ama nafile. illaki tabloyu açıp kapicam.
acaba bunun çaresi var mıdır?
eğer yoksa o zaman sp ve triggerlarla kazanılan hız tabloyu açıp kapamakla kaybolur.
transectionu commitretraing ve tabloyu refresh yapıyorum ama nafile. illaki tabloyu açıp kapicam.
acaba bunun çaresi var mıdır?
eğer yoksa o zaman sp ve triggerlarla kazanılan hız tabloyu açıp kapamakla kaybolur.

şeklinde değildekaydet.Transaction.CommitRetaining;
Kod: Tümünü seç
ibtransaction1.CommitRetaining;
Bilginin sınırı öğrenmenin yaşı yoktur.
Ayrı ayrı queryler çalıştırıyorsun ve bir şekilde birbirinden farklı olan queryleri uyandırman lazım.
3 adet queryin var birine kayıt ekledin diğer querylerinde bunlardan haberdar değil bu haberdar olmayan Query leri uyandırman için IBEvent lerden yararlanabilirsin.
ibevent
Not : Dataset leri close open yapmak sizin için çok zaman kaybettirmez. Mege nin yaptığı test leri ve Adnan abi nin seminer kayıtlarınızı inceleyemenizi tafsiye ederim.
Kolay Gelsin...
3 adet queryin var birine kayıt ekledin diğer querylerinde bunlardan haberdar değil bu haberdar olmayan Query leri uyandırman için IBEvent lerden yararlanabilirsin.

Not : Dataset leri close open yapmak sizin için çok zaman kaybettirmez. Mege nin yaptığı test leri ve Adnan abi nin seminer kayıtlarınızı inceleyemenizi tafsiye ederim.
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
hocam benim derdim olayı yakalamak değil ne zaman değiştiğini biliyorum. commit yerine commitretraing ardından refresh yapıyorum ama ne kayıt silindiğinde ne eklendiğinde ne de değiştiğinde bişi görmüyor. fetchall uda denedim olmuyor. ayrıca tek query kullanıyorum. yaptığım işlemleri triggerla yapıyorum. ama programı açıp kapama,tabloyu açıp kapama yada commit etmeden görmüyor. illa ki açıp kapamammı gerek?
Triger ve Splerden kayıt işlemleri yapıyorsanız query i açıp kapatmanız gerekecek.
Kolay Gelsin...
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.