Her Table'a Ayrı Transactionmu Yoksa Her ibdatabase Ayrı Tra
Her Table'a Ayrı Transactionmu Yoksa Her ibdatabase Ayrı Tra
Merhaba
Firebird Tabanlı yaptıgımız programda
Datamodulumuzdeki
Her Table icin Ayrı Transactionmu kullanmalıyız yoksa
Her Farklı ibdatabase(*.fdb) icinmi ayrı Transaction kullanmalıyız?
Hangisi Mantıklıdır?
Firebird Tabanlı yaptıgımız programda
Datamodulumuzdeki
Her Table icin Ayrı Transactionmu kullanmalıyız yoksa
Her Farklı ibdatabase(*.fdb) icinmi ayrı Transaction kullanmalıyız?
Hangisi Mantıklıdır?
Benim kullanım şeklim. Yanlışsa ustalar benimkinide düzeltmiş olur.
Her veri tabanı için bir adet IBDatabase, bir adet IBTransaction, kullanıyorum.
Her bir tabloya ulaşmak için (burada table yerine query ile işlem yapıyorum) bir adet IBQuery, bir adet ClientDataSet, bir adet DataSetProvider, bir adet de DataSource kullanmaktayım.
Her veri tabanı için bir adet IBDatabase, bir adet IBTransaction, kullanıyorum.
Her bir tabloya ulaşmak için (burada table yerine query ile işlem yapıyorum) bir adet IBQuery, bir adet ClientDataSet, bir adet DataSetProvider, bir adet de DataSource kullanmaktayım.
St. NonStop
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi
herkezin farklı sanırım
benim tekniğim
Tek ibdabase
Raporlar için bir transaction
her master detail için ayrı ayrı transaction kesinlikle ayrı
kayıt lara yansıyan datasetlerede ayrı transaction eklemeye çalışırım...
Kolay Gelsin...
benim tekniğim
Tek ibdabase
Raporlar için bir transaction
her master detail için ayrı ayrı transaction kesinlikle ayrı
kayıt lara yansıyan datasetlerede ayrı transaction eklemeye çalışırım...
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.
viewtopic.php?t=11770&highlight=transaction
senin açtığın başlık ve orada yanıt verilmiş ayrıca.
viewtopic.php?t=10140&highlight=transaction
viewtopic.php?t=5737&highlight=transaction
viewtopic.php?t=4686&highlight=dataset
Kolay gelsin.
senin açtığın başlık ve orada yanıt verilmiş ayrıca.
viewtopic.php?t=10140&highlight=transaction
viewtopic.php?t=5737&highlight=transaction
viewtopic.php?t=4686&highlight=dataset
Kolay gelsin.
Transaction : Veri bütünlüğü için kullanılan bir yöntem. Örneğin bir fatura kaydı girerken master'ı kaydettiniz detaylardan da 2 sini girdiniz, 3. yü girerken hata verdi. Eğer işlemi geri almadan (rollback) bir daha aynı faturayı girerseniz program hiçbir zaman düzgün çalışmaz.
Bölünemez bütünler için tek bir transaction, her işlem içinde ayrı transactionlar olması daha iyi. Bütün bunları tek bir transaction üzerinden yapmak ne derece mantıklı acaba?
fatura master girdin kaydettin, bir tane detay girdin.
detay girerken stok eksik çıktı, stok ekranına gittin, stoğu girdin commit ettin, ama faturayı girmektende vazgeçtin. Bu işlemler için tek transation kullandıysan -> ŞİŞTİN.
Sonuç :
Arama, online bulamıyorsanız offline dan arayın lütfen 
Kolay gelsin.
Bölünemez bütünler için tek bir transaction, her işlem içinde ayrı transactionlar olması daha iyi. Bütün bunları tek bir transaction üzerinden yapmak ne derece mantıklı acaba?
fatura master girdin kaydettin, bir tane detay girdin.
detay girerken stok eksik çıktı, stok ekranına gittin, stoğu girdin commit ettin, ama faturayı girmektende vazgeçtin. Bu işlemler için tek transation kullandıysan -> ŞİŞTİN.
Sonuç :


Kolay gelsin.
Mustafa Bey
Sayın Mustafa bey
Dediginiz Mantıklı ancak
Fatura icinde ki kullanacagımız STOK ,HAREKET,ve Fatura tablolarına aynı transactionu kullanırsak sonucta dısardan biri yeni bi stok kaydedip COMMIT dediginde bizim fatura icindeki bilgilerde otomatik kaydolacaktır
Bu yuzden 2 ayrı table da STOK datalarınımı tutmalıyız Yoksa
Fatura icine girildiginde STOK tablosunun Transactionunu degistirmelimiyiz? Ayrı Ayrı Transaction kullandıgımızda da Herhangi bi Elektrik kesintisi durumunda (FATURA KAYDEDDILIYORKEN) islenen commitlere kadar kısım vertabanına islenecek alt satırlardaki COMMIT edilmeyecek ve veri bütünlügü bozulacak ASIL SORUN BU??
Dediginiz Mantıklı ancak
Fatura icinde ki kullanacagımız STOK ,HAREKET,ve Fatura tablolarına aynı transactionu kullanırsak sonucta dısardan biri yeni bi stok kaydedip COMMIT dediginde bizim fatura icindeki bilgilerde otomatik kaydolacaktır
Bu yuzden 2 ayrı table da STOK datalarınımı tutmalıyız Yoksa
Fatura icine girildiginde STOK tablosunun Transactionunu degistirmelimiyiz? Ayrı Ayrı Transaction kullandıgımızda da Herhangi bi Elektrik kesintisi durumunda (FATURA KAYDEDDILIYORKEN) islenen commitlere kadar kısım vertabanına islenecek alt satırlardaki COMMIT edilmeyecek ve veri bütünlügü bozulacak ASIL SORUN BU??
Sorunuzu tam anlamadım. Stok Fatura ve hareket tablolarıyla işlem yaparken açmış olduğunuz transactionı zaten siz kullanıyorsunuzdur. Başkası programa girip bir ürün vs eklediğinde sizin transaction niye commit olsun ???
İkinci sorunuza yanıt olarak da trans actionlara default action rollback tanımlarsınız. İşleminiz bittiğinde hepsini commit edersiniz. Eğer siz commit yapmadıysanız Rollback işlemi yapılacağından program sonlandığında veri kaydedilmez. Yanlışmı düşünüyorum ???
İkinci sorunuza yanıt olarak da trans actionlara default action rollback tanımlarsınız. İşleminiz bittiğinde hepsini commit edersiniz. Eğer siz commit yapmadıysanız Rollback işlemi yapılacağından program sonlandığında veri kaydedilmez. Yanlışmı düşünüyorum ???
St. NonStop
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi
Hocam ne demek istediğini tam anlayamadım. Kural şu sen bu kuralı uygula sonuca sen git 
"Hangi işlemlerin yarım olarak kaydedilmesi benim verilerimi bozar?". Bu işlemlerin her birine ayrı transaction koy.
Örneğin stok tek tablo ise buna bir transaction. Fatura ve Fatura Detay şeklinde 2 tablon varsa bu ikisine bir transaction gibi.
Kolay gelsin.

"Hangi işlemlerin yarım olarak kaydedilmesi benim verilerimi bozar?". Bu işlemlerin her birine ayrı transaction koy.
Örneğin stok tek tablo ise buna bir transaction. Fatura ve Fatura Detay şeklinde 2 tablon varsa bu ikisine bir transaction gibi.
Kolay gelsin.
Mustafa Bey
Demek istedigim su
Fatura Tableında
-------------------
Fatura
Cari Tanim
Stok Tanim
Fatura Hareket
iskonto hareket
stokekstre
cariekstre
------------------
1- Fatura kesildiginde bu 7 tablo işlem goruyor
Eger bu table ların hepsine 1 transaction koyarsak dediginiz Problem (ayrı biri stok ekleyip commit ettiginde SİSME) olacaktır
Iste buna karsı ne yapmalıyız?
2- Hepsine ayrı Transaction koyarsak Bu seferde Fatura kaydedilme asamasında satır satır commit gideceginden ELEKTRİK KESİNTİSİNDE ilk satırlardaki transactionlar COMMIT olacak son satırlar elektrik kesildiginden COMMIT olmuyacak ve bolelikle Örnegin Cari ve stokbakiyesi degismesine ragmen bu fatura kaydedilmedigi icin son stok ve cari ekstrede hareketler gozukmıyecek
Iste bu gibi bi durumda ne yapmak lazım?
Fatura Tableında
-------------------
Fatura
Cari Tanim
Stok Tanim
Fatura Hareket
iskonto hareket
stokekstre
cariekstre
------------------
1- Fatura kesildiginde bu 7 tablo işlem goruyor
Eger bu table ların hepsine 1 transaction koyarsak dediginiz Problem (ayrı biri stok ekleyip commit ettiginde SİSME) olacaktır
Iste buna karsı ne yapmalıyız?
2- Hepsine ayrı Transaction koyarsak Bu seferde Fatura kaydedilme asamasında satır satır commit gideceginden ELEKTRİK KESİNTİSİNDE ilk satırlardaki transactionlar COMMIT olacak son satırlar elektrik kesildiginden COMMIT olmuyacak ve bolelikle Örnegin Cari ve stokbakiyesi degismesine ragmen bu fatura kaydedilmedigi icin son stok ve cari ekstrede hareketler gozukmıyecek
Iste bu gibi bi durumda ne yapmak lazım?
TransAction1->Commit();
TransAction2->Commit();
TransAction3->Commit();
TransAction4->Commit();
TransAction5->Commit();
elektrik gitti.... (Nasıl olduysa TEDAŞ kıllık yaptı bize)
TransAction6->Commit(); // Elektirik Yüzünden Commit edilemedi
TransAction7->Commit(); // Elektirik Yüzünden Commit edilemedi
(Hoş bu commit edilme işlemi ne kadar bir zaman sürüyor ?? sırasıyla commit emrini verdik ne kadar sürede tamamı commit edilmiş olur bilmiyorum)
Fakat bu tarzda junk bilgiden kurtulmak için programın başına veya özel bir tuşla bağlantısı hasarlı olan kayıtları sildirebilirsiniz...
TransAction2->Commit();
TransAction3->Commit();
TransAction4->Commit();
TransAction5->Commit();
elektrik gitti.... (Nasıl olduysa TEDAŞ kıllık yaptı bize)
TransAction6->Commit(); // Elektirik Yüzünden Commit edilemedi
TransAction7->Commit(); // Elektirik Yüzünden Commit edilemedi
(Hoş bu commit edilme işlemi ne kadar bir zaman sürüyor ?? sırasıyla commit emrini verdik ne kadar sürede tamamı commit edilmiş olur bilmiyorum)
Fakat bu tarzda junk bilgiden kurtulmak için programın başına veya özel bir tuşla bağlantısı hasarlı olan kayıtları sildirebilirsiniz...
St. NonStop
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi
junk bilgi diil
Bu dediginiz 1.2.3.4.5. transactionlar commit edilirse veri butunlugu bozulur Atıyorum Stok ve cari ler yanlıs gosterirler
Bunları silmenizde imkansız gibi bir durum veri butunlugu bozulabilir
Baska bi cozum olmalı?
Bunları silmenizde imkansız gibi bir durum veri butunlugu bozulabilir
Baska bi cozum olmalı?
Bunların hepsini tek bir transactiona bağlansa...
Örneğin. Fatura kayıt. ile ilgili olarak
FaturaTA diye bir trans action açarsınız. İlgili dblere ve query vs. fatura kaydı yapılacağı zaman transaction olarak bunu atarsın. Fatura işlemi bittiğinde ise bu transactionı commit ettirirsin. Ve Trans action ayarlarını eskisine çevirirsin.
Bu transactionın default actionu rollback yaparsın. Eğer fatura işlem halindeyken program kapatılırsa kayıt yapılmaz. Tek bir transaction olduğu için commit işleminde yaşanabilecek problemler minimize edilir.
Örneğin. Fatura kayıt. ile ilgili olarak
FaturaTA diye bir trans action açarsınız. İlgili dblere ve query vs. fatura kaydı yapılacağı zaman transaction olarak bunu atarsın. Fatura işlemi bittiğinde ise bu transactionı commit ettirirsin. Ve Trans action ayarlarını eskisine çevirirsin.
Bu transactionın default actionu rollback yaparsın. Eğer fatura işlem halindeyken program kapatılırsa kayıt yapılmaz. Tek bir transaction olduğu için commit işleminde yaşanabilecek problemler minimize edilir.
St. NonStop
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi