Delphiden Database exception ları kesmenin yolu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Delphiden Database exception ları kesmenin yolu

Mesaj gönderen gokcemt »

Selamın Aleyküm arkadaşlar


Yazdığım programda çift kayıt girişini engellemek için ADODataset in
Posterror events ına aşağıdaki kodu yazdım.

If Pos('IX_BRKNUMTIP',e.Message)>0 tHEN
begin
Showmessage('Bu kayıt daha önce girilmiş...');
end;

Fakat test yapmak için daha önce kayıt yapılmış bir kodu girmek istediğimde önce showmessage ı alıyorum ardındanda "cannot insert duplicate key row in object" olarak dönen hatayı alıyorum. Ama ben sadece showmessage dönsün istiyorum bu durumda.

bununla ilgili bir çözüm varmı acaba?
Teşekkürler Saygılarımla
west
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,
Bunu ADO nun OnPostError olayına yazmak yerine, kayıdı yaptığınız procedure yi try except bloğuna alarak yapmanızı öneririm, kontrol etme olağanağınız daha yüksek olur
Örn;

Kod: Tümünü seç


try
....
....KAYIT İŞLEMİ RUTİNLERİNİZ
....
...
   
  except on e: exception do
   begin
        If Pos('IX_BRKNUMTIP',e.Message)>0 tHEN  Showmessage('Bu kayıt daha önce girilmiş...') else Showmessage('Bilinmeyen Hata...'+e.message);
   end;
end;



Volkan KAMADAN
www.polisoft.com.tr
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Mesaj gönderen gokcemt »

Evet öncelikle teşekkürler sorun dediğiniz şekilde halloluyor.

If Pos('IX_BRKNUMTIP',e.Message)>0 then
begin
MessageDlg('Bu "Tip Kodu" daha önce girilmiş.',mtError,mbOKCancel,0);
Abort;
end;


Abort eklediğimdede hatamesajı çıkmadan donduruyor. Buda bi çözüm şekli oldu bu arada.

Yanlız programdan çalıştırınca hatayı veriyor Build edip EXE den çalıştırınca hatasız çalışıyor oda ilginç.
west
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

gokcemt yazdı: Yanlız programdan çalıştırınca hatayı veriyor Build edip EXE den çalıştırınca hatasız çalışıyor oda ilginç.
Derleyici den çalıştırdığınızda Eğer Tools/Debugger options/Language Exceptions sekmesinden StopOn Delphi Exceptions seçeneği işaretliyse hata oluştuğunda program kırılıp hata noktasına gidilir varsayılan olarak bu seçenek aktiftir bunu kaldırırsanız bu gibi durumlarda derleyici hatası almazsınız.
Volkan KAMADAN
www.polisoft.com.tr
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Mesaj gönderen gokcemt »

Derleyici hatasını kaldırdım ama SQL den dönen hatayı showmessageden sonra tekrar veriyor. Abort ettiğimde kesiyor ancak.
west
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Mesaj gönderen csunguray »

Kullanmanız gereken kalıp şu şekilde olmalıdır.

Kod: Tümünü seç

procedure Form1.Kaydet;
begin
  Dataset1.Insert;
  try
    // ***
    // Buraya saha atamaları.
    // ***
    Dataset1.Post;
  except
    on E:Exception do
    begin
      Dataset1.Cancel;
      ShowMessage(E.Message);
      //raise Exception.Create(E.Message+#13+'Hata Oluştu...');
    end;
  end;
end;

procedure Form1.Dataset1BeforePost(Dataset: TDataset);
begin
  if CiftKayit then
  begin
    raise Exception.Create('Aynı kayıt önceden var.');
  end;
end;

C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla