Bunun icin benim uyguladigim minimum maliyetli yontem su. Oncelikle kullandiginiz tablolarda tekrar etmesini istemediginiz alanlar icin unique indexler tanimlarsiniz.
Sonra proje icinde her yerden uloasabileceginiz bir yerde asagidaki gibi bir fonksiyon yazarsiniz.
Kod: Tümünü seç
procedure POST_ERROR(VAR_MESSAGE : string);
begin
if POS('is not unique', VAR_MESSAGE)>0 then
MessageDlg('Bu kayit daha once kaydedilmis.',mtError, [mbOK],0)
else if POS('invalid value for column', VAR_MESSAGE)>0 then
MessageDlg(VAR_MESSAGE,mtError, [mbOK],0);
end;
Sonra da butun table componentlerinizin onposterror eventine
seklinde bir kod yazarsaniz. Bir tabloyyu post ederken olusabilecek her turlu hatayi ayiklayarak anlamli mesajlar haline getireceginiz birt yapi olur.
POST_ERROR fonksiyonunu yazarken gelen mesajdaki BDE veya Database tarafindan gelen ilave kelimeleri kirparsiniz. Ayrica bos gecilemeyecek bir alani bos gectiginiz icin veritabanindan gelen bir mesaji da burada else ile devam ederek anlamli mesajlara donusturebilirsiniz. Kendi kullandigimiz kodda bunlari yapiyoruz fakat karisik olmasin diye sade bir ornek yazdim. Ornekte ayni kaydi kaydetmeye calistignizda veritabani tarafindan 'is not unique' seklinde bir mesaj geldigini varsaydim. Siz gelen mesaji gorerek burtayi duzenlemelisiniz tabi ki.
Bu yapinin aynisini EDIT_ERROR, DELETE_ERROR seklinde 2 fonksiyonla birlikte tamamlayarak veritabani ile ilgili olusabilecek butun hatalari bu 3 fonksiyon uzerinden anlamli mesajlara donusturebilirsiniz.
Diger bir yol ise kullandiginiz formlari baska formalrdan inherit ederek kullaniyorsaniz ya da kullanmiyorsaniz bile. icine TAppEvents componenti koyacaginiz bir Formu Ornegin FRM_ANA_FORM seklinde kaydedip. Bu formu projenize ekledikten sonra. Butun formlarinizin en tepesinde uses'in altindaki
seklindeki bolumu
Kod: Tümünü seç
type
TFRM_PERSONEL = class(TFRM_ANA_FORM)
sekline donustururseniz butun formlari FRM_ANA_FORM 'dan inherit etmis olursunuz. Sonra da FRM_ANA_FORM'daki TAppEvents'in OnException eventinde o formlarda olusan her turlu hata ayiklamayi yapabilirsiniz. O Event icinde E.Message seklinde gelen hata mesajina ulasip istediginiz gibi ayiklayip kendi mesajinizi verebilirsiniz.
Epey uzun oldu. Umarim kafa karistirmamisimdir.
Rapor aracina gelince. ReportBuilder iyi bir tavsiye olabilir.
Kolay gelsin...