Sorunlu İstisna kontrolü

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Sorunlu İstisna kontrolü

Mesaj gönderen vkamadan »

Merhaba ;
Aşağıdaki gibi bir kod bloğum var.

Kod: Tümünü seç

if Application.MessageBox('Borç Kapama İşlemi Geri Alınacak. Onaylıyormusunuz?','UYARI',mb_yesno+MB_ICONQUESTION+mb_defbutton2)=6 then
  begin
    try
    Ana_menu.Database1.StartTransaction;
    police;
    taksit;
    tahsilat;
    hareket_sil;
    mahsup_sil;
    Ana_menu.Database1.Commit;
    except on e: exception do
    begin
    Ana_menu.Database1.Rollback;
    ShowMessage('Kayıt Yapılamadı..!'+#13+'Sistem Hata Mesajı = '+e.Message);
    end;
   end;
Database im MySQL InnoDB Transaction Desteği var yani.
Ama sorun şu eğer istisna "police" procedurunde oluşursa diğerleri çalıştırılmıyor doğru olan bu yani. ama ortalarda bir yerde oluşursa istisna oluşna kadar çalıştırılan procedurelerin VT ye yaptığı değişiklikler Except bloüunda ROLLBACK dememe rağmen geri alınmıyor. bunun nedeni ne olabilir.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Mesaj gönderen yusuf simsek »

dostum kolay gelsin.

My sql den anlamıyorum ama sql'den biraz çakıyorm.

Derslerde gördüğümüz kadarıyla yapılan işlemler kullanıcı da geçici bellekte tutuluyor. ve kaydet komutunu kullanana kadar veritabanına (ana makinaya) birşey yazmıyor..

Sen bu olayların zaten daha ilerisini biliyorsundur..

Acaba procedure lerin birisinin içinde KAYIT olayı gerçekleşiyor olabilirmi?

Bazen insanın gözünden ufak şeyler kaçabiliyor.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
öle bir sorun yok arkadaşım.
Acaba VT de gerekli bir ayarmı var ama şunu belirtmek istiyorum denemek amaçlı,
bir program yazdım ve Transaction çalışıyor kesin çalışıyor yani
ama burada bahsettiğim gibi bir durum söz konusu.
Önerilerinizi bekliyorum. ilgilenen arkadaşlara teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
NetZero
Üye
Mesajlar: 136
Kayıt: 14 Ağu 2004 11:12
Konum: Bursa
İletişim:

Mesaj gönderen NetZero »

Kod: Tümünü seç

if Application.MessageBox('Borç Kapama İşlemi Geri Alınacak. Onaylıyormusunuz?','UYARI',mb_yesno+MB_ICONQUESTION+mb_defbutton2)=6 then
   begin
      with qrytemp do begin
           close; sql.clear ;
           sql.add('set autocommit=0');
           try
             ExecSql;
           finally
             close;Sql.Clear;
             sql.add('start transaction');
             try
               try
                 ExecSql;
               finally
                 police;
                 taksit;
                 tahsilat;
                 hareket_sil;
                 mahsup_sil;
                 try
                   try
                     close;sql.clear;
                     sql.add('commit');
                   finally
                     ExecSql;
                   end;
                 except
                   MessageDlg('Commit Error!',MtError,[MbOk],0);
                 end;
               end;
             except
               close; sql.Clear;
               sql.add('rollback');
               try
                 try
                   ExecSql;
                 finally
                   MessageDlg('OK!',MtError,[MbOk],0);
                 end;
               except
                 MessageDlg('Olmadı be!',MtError,[MbOk],0);
               end;
             end;
           end;
      end;
   end;
En son NetZero tarafından 30 Ağu 2004 11:06 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
c#

:alsana: :boks:
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Selamlar

Ben interbase de table ile yaptığım kayıt girişlerinde örneğin.

Kod: Tümünü seç

 Table1.insert;
           Table1ad.asstring:='xxx';
           Table1soyad.asstring:='yyy';
           Table1.post
diye bir şey yazdığımda bu işlemden sonra formu kapatırsam database e kayıtlar ekleniyor.

Sende de böyle formun yada programın kapanması gibi bir olay oluyormu belki bu şeklide değerlerin DB ye eklenniyordur.

Kolay Gelsin.
I love my car.
Blog Yaptık
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Evt,
Sayın NetZero;
Göndermiş olduğun yöntem çalışıyor.
İlgilenen arkadaşlara teşekkürler,
AUTOCOMMIT=0 yapınca düzeldi.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla