ApplyUpdates, Commit, Commitretaining hangisi?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
slm_sakal
Üye
Mesajlar: 24
Kayıt: 09 Ağu 2005 10:03
Konum: İstanbul
İletişim:

ApplyUpdates, Commit, Commitretaining hangisi?

Mesaj gönderen slm_sakal »

Slm arkadaşlar. Bir konu hakkında görüşlerinizi alabilir miyim?

Kod: Tümünü seç

IBTransaction1.Commit;
IBTransaction1.Commitretaining;
IBDataset.ApplyUpdates;
IBTable1.Post;
IBTable1.Append;
Bu kodların yaptığı iş biliyorsunuz ki özetle yapılan kayıtları veritabanına kaydediyor. (Post ve Append'i çıkarın aradan. Onlardan sonra commitretaining veya applyupdates yapmak gerekiyor ki veritabanına fiziksel olarak yazsın.) IBTable ile kayıt yaparken bu kodların hangisini kullanmak daha doğru? (Commit, commitretaining ve applyupdates) Şu anda üzerinde çalıştığım projemde Kaydet tuşunda post; ve ibtransaction1.commitretaining; kodları, IBTable'ın AfterPost olayında ise IBTable1.Applyupdates; kodları var. Bu şekilde kullanırken hiç hata almıyorum ve istediğim işi de yapıyor. Ama sizce böyle çalışmak sağlıklı mı? Yoksa commitretaining i afterpost a alıp applyupdates i tamamen mi kaldırim?
BeLeSCafe.Net IRC Serverları
irc.belescafe.net - http://www.belescafe.net
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhaba.

ApplyUpdates ve CancelUpdates tarnsactionla değilde direkt olarak table, query veya dataset teki bilgileri hafızaya alarak çalışır. yani post komutundan sonra bilgiler chackedupdates true ise transactionda değilde hafızaya yüklenir. tabi bu durum uzun bilgi girişlerinde hafızayı doldurabilir veya performansını düşürebilmektedir. post ile hafıya alınan bilgiler applyupdates komutu ile vt ye yazılır ve hafıza boşaltılır. cancelupdates ile de hafızadaki bilgiler vt ye yazılmaz hafıza boşaltılır.

Commit: Transactiondaki bilgileri vt ye yazar tarnsactiondaki bilgiler boşaltılır, vt ile transaction arasındaki bağlantı kesilir.

Rollback : traansactiondaki bilgiler vt ye yazılmaktan vazgeçilir. transaction boşaltılır, vt ile transaction arasındaki bağlantı kesilir.

CommitRetaining : transactiondaki bilgiler vt ye yazılır transaction boşaltılır, vt ile transaction arasındaki bağlantı devam eder.

RollbackRetaining : traansactiondaki bilgiler vt ye yazılmaktan vazgeçilir. transaction boşaltılır, vt ile transaction arasındaki bağlantı devam eder.

yukarıda bahsettiğim 2 yöntemden birini kullanmalısın. her ikisini de kullanmanı tavsiye etmem. hangisi daha sağlı dersen, tabiki transaction derim. transaction un görevi budur. yani güvenli bir şekilde vt ye kaydetmek. kolay gelsin..
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
slm_sakal
Üye
Mesajlar: 24
Kayıt: 09 Ağu 2005 10:03
Konum: İstanbul
İletişim:

Mesaj gönderen slm_sakal »

İlginiz için teşekkürler. O kadar uğraşıp yazmışsınız ama benim asıl sorduğum kısaca kaydederken (post işlemi) commitretaining yapıp kayıttan sonra da applyupdates kullanınca herhangi bir sorun olup olmayacağıydı.

Kod: Tümünü seç

Button1.Click;
IBTable1.Post;
IBTransaction1.commitretaining;

IBTable1.AfterPost;
IBTable1.Applyupdates;
Şu anda böyle kullanıyorum ve hatasız çalışıyor. Ama sizin gibi bizden çok daha tecrübeli abilerimizin bu durumda hangi yöntemi kullandığınızı / kullanacağınızı öğrenmek istiyorum.

Kod: Tümünü seç

Button1.Click;
IBTable1.Post;

IBTable1.AfterPost;
IBTransaction1.Commitretaining;
BeLeSCafe.Net IRC Serverları
irc.belescafe.net - http://www.belescafe.net
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

@kadirkurtoglu ApplyUpdates'i nerede kullanıp nerede (zaten!) kullanmayacağını anlatmış. Hatasız çalışıyor diyorsan yapacak başka birşey yok zaten.
Kullanıcı avatarı
slm_sakal
Üye
Mesajlar: 24
Kayıt: 09 Ağu 2005 10:03
Konum: İstanbul
İletişim:

Mesaj gönderen slm_sakal »

Eyvallah çok saolun, yardımlarınız için tşkler.
BeLeSCafe.Net IRC Serverları
irc.belescafe.net - http://www.belescafe.net
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ibx bileşenlerinin hangi sürümünü kullanıyorsunuz ?
3 katmanlı bir program geliştirmiyorsanız applyupdate kullanmanın çok fazla bir artısı yok hatta gereksiz bile diyebiliriz.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
slm_sakal
Üye
Mesajlar: 24
Kayıt: 09 Ağu 2005 10:03
Konum: İstanbul
İletişim:

Mesaj gönderen slm_sakal »

Delphi 6 ile gelen standart IBX bileşenlerini kullanıyorum. Bende gereksiz diye düşünüyorum. Aynı şeyi 2 kodla birlikte yapmanın faydasını daha önce hiç görmedim. Commitretaining kullanmak çok daha mantıklı.
BeLeSCafe.Net IRC Serverları
irc.belescafe.net - http://www.belescafe.net
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ibx bieleşenleri güncelleyince apllyupdate satırlarında hata alacaksınız büyük ihtimalle :)
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Cevapla