Merhabalar
FATURA Table
FATURAHAREKET Table iliskilidir.
Fatura Kaydedildiginde Tüm Fatura Hareketlerindeki Stok Tanımlarını FAtura türüne gore artırıp azaltma işleminin Cokfazla olan satırlarda
Elektrik kesintilerine veya data kesintilerine karsı Veri bütünlügünün % 100 Korunarak Kaydedilmesini saglamak icin napmak gerekir
1.si Faturahareket tablosu gridinde her postta mı stokambardurum tablosunu etkilemek en mantıklısı?
2.si Yoksa Tüm faturahareket satırlarını fatura kaydedilirkenmi stokambardurumlarını etilemeli ki suan bunu yapıyoruz ancak bazı durumlarda bi bakıyoruz fatura kaydedilmis olmasına ragmen faturahareketlerindeki rakam stokambardurum tablosuna yansımamıs bu neden kaynaklanabilir?
3.sü bir fatura kaydedilirken veri bütünlügünü saglamak icin acaba arka(batch) gibi bi ara stokdurum tablosu mu tutmak gerekir?
Kodlama tamamen delphi tarafında yapılmakta table ların onpost onedit olayları kullanılmaktadır.
Bir Fatura Tablosunun % 100 Veri Bütünlügünde Kaydedilmesi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- hedefbusiness
- Üye
- Mesajlar: 32
- Kayıt: 11 Nis 2006 11:59
- İletişim:
Bu sorunların veri tabanı tarafındaki tek çözümü tam ACID destekli bir veritabanı kullanmak ve işlemleri transaction koruması altında halletmek.
Burada işler yaklaşık şöyle yürür:
Transaction başlar.
Fatura kaydedilir.
Faturada kaydedilen hareketlerin stok tanımları işlenir.
Transaction kapatılır.
Transaction başladıktan sonra oluşan hareketler aslında transaction kapatılmadan veritabanına yansıtılmaz, bekletilir. Kapatılana kadar oluşabilecek olan sorunlarda veri bütünlüğünüz kaybolmayacaktır.
Firebird ACID ve transaction destekli bir DB. Forumumuzda birçok örnek ve bilgi mevcut. Bunları inceleyebilirsiniz.
Burada işler yaklaşık şöyle yürür:
Transaction başlar.
Fatura kaydedilir.
Faturada kaydedilen hareketlerin stok tanımları işlenir.
Transaction kapatılır.
Transaction başladıktan sonra oluşan hareketler aslında transaction kapatılmadan veritabanına yansıtılmaz, bekletilir. Kapatılana kadar oluşabilecek olan sorunlarda veri bütünlüğünüz kaybolmayacaktır.
Firebird ACID ve transaction destekli bir DB. Forumumuzda birçok örnek ve bilgi mevcut. Bunları inceleyebilirsiniz.
- hedefbusiness
- Üye
- Mesajlar: 32
- Kayıt: 11 Nis 2006 11:59
- İletişim:
Transactionu her defasında baslatmı dememiz gerek?
Gecen Fatura Satırları ile ilgili sorunuma cevap yazmıstınız.
Simdi sizin dedginiz gibi zaten Firebird kullanıoruz
SP yazmadık tamamen Delphi datamodullerinde kodları kontrol edioruz tableların onpost olaylarına kodları yazdık Fatura da kaydet butonuna tıkladıgımızda sırasıyla tüm fatura hareket satırlarını satır sat once stok ekstre sonrada stokambardurum tablolarına isliyor.
Hata olusmasınıda asagıdaki gibi try...except arasında kontrol edioruz.
Yapmadıgımız sey except ten sonra rollbackretaining yapmamamızdı exceptten bi oncek satırdada commitretaining uyguluyoruz.
Ama su var Transactionu baslatmaktan kastınız ne zaten 1 transaction kullanıoruz programda Ornegin Yeni Fatura dedigimizde veya Faturayı degistir dedigimizde zaten transaction baslamıs olmuyormu veya her commitretainingden sonra tekrarmı transaction baslatıcaz?
Kısacası Program acıldıgında zaten Transaction baslamıormu yoksa her yeni kayıt dedigimizde zaten 1 adet olan transactionumuzu yeniden mi baslatmalıyız veya kayıt degistir dedigimizde transactionu yeniden mi baslatmalıyız?
Simdi sizin dedginiz gibi zaten Firebird kullanıoruz
SP yazmadık tamamen Delphi datamodullerinde kodları kontrol edioruz tableların onpost olaylarına kodları yazdık Fatura da kaydet butonuna tıkladıgımızda sırasıyla tüm fatura hareket satırlarını satır sat once stok ekstre sonrada stokambardurum tablolarına isliyor.
Hata olusmasınıda asagıdaki gibi try...except arasında kontrol edioruz.
Yapmadıgımız sey except ten sonra rollbackretaining yapmamamızdı exceptten bi oncek satırdada commitretaining uyguluyoruz.
Ama su var Transactionu baslatmaktan kastınız ne zaten 1 transaction kullanıoruz programda Ornegin Yeni Fatura dedigimizde veya Faturayı degistir dedigimizde zaten transaction baslamıs olmuyormu veya her commitretainingden sonra tekrarmı transaction baslatıcaz?
Kısacası Program acıldıgında zaten Transaction baslamıormu yoksa her yeni kayıt dedigimizde zaten 1 adet olan transactionumuzu yeniden mi baslatmalıyız veya kayıt degistir dedigimizde transactionu yeniden mi baslatmalıyız?