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
Delphiden Database exception ları kesmenin yolu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
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;
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
www.polisoft.com.tr
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ç.
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
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.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ç.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
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/)
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/)