Commit olayı :) malesef...

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
Özdemir
Üye
Mesajlar: 21
Kayıt: 18 Oca 2004 02:57
Konum: istanbul

Commit olayı :) malesef...

Mesaj gönderen Özdemir »

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..
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

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...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

iki ayrı query kullanana kadar dataset icerisine yazıp query i
klasik tablo insert,edit ,post islemleri ile daha rahat edersiniz....
ÜŞENME,ERTELEME,VAZGEÇME
Özdemir
Üye
Mesajlar: 21
Kayıt: 18 Oca 2004 02:57
Konum: istanbul

Mesaj gönderen Özdemir »

Çok teşekkür ederim..
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

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. :roll:
ercere
Üye
Mesajlar: 48
Kayıt: 23 Kas 2004 02:38
Konum: Ulus-BARTIN

Mesaj gönderen ercere »

kaydet.Transaction.CommitRetaining;
şeklinde değilde

Kod: Tümünü seç

ibtransaction1.CommitRetaining;
şeklinde bir denermisiniz.Bende çok uğraşmıştım.Şimdi kodlara bakıyorum bu şekilde yapmışım.
Bilginin sınırı öğrenmenin yaşı yoktur.
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

ikisinide denedim olmuyor :cry:
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

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. :ara 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...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

IBX satır bazında refresh yapıyor. Problem burada. Aslında commit ettikten sonra refresh ederseniz. Kaydın değişikliğini görebiliyorsunuz. Ancak yeni kayıt eklendiğinde göremiyorsunuz.

Gerçi hiç denemedim ama, FetchAll yapmak çözüm olabilir gibi geliyor. Denemesi bedava. :)
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

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?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Triger ve Splerden kayıt işlemleri yapıyorsanız query i açıp kapatmanız gerekecek.

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.
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

:( Teşekküler
Cevapla