معالجة الاخطاء
#1
السلام عليكم ورحمة الله وبركاته
في جدول البينات retraite.db(table5) قمت بجعل N_ret هو الانديكس للجدول
وفي form7 عند اضافة شخص جديد برقم N_ret موجود لدى شخص اخر فان الرسالة التالية تظهر عند التنفيذ :violation de clé . والتي لاتختفي الا بفلق البرنامج ثم فتحه مرة ثانية.
اظن ان معناها واضح لكن كيف التخلص من هذا المشكل بواسطة رسالة تظهر للمستخدم تخبره بوجود شخص اخر مسجل بهذا الرقم.
حاولت بالتعليمة try....except لكن لم تنجح.
المشروع بالمرفقات وانا بانتظار ردودكم القيمة وشكرا.


الملفات المرفقة
.rar   CNR.rar (الحجم : 617.97 ك ب / التحميلات : 42)
الرد
#2
استعمل شرط مع الدالة FindKey

....if FindKey[Edit1.Text] then
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#3
السلام عليكم

يمكن ايضا :
فى حدث PostError للجدول الخامس
PHP كود :
procedure Tdm.Table5PostError(DataSet: TDataSet; E: EDatabaseError;
  var 
Action: TDataAction);
begin
  Action 
:= daAbort;
  
DataSet.Cancel;
  {
يجب معرفة نوع الخطاء لارسال رسالة على اساس ذالك الخطاء}
  
ShowMessage('??? <E: EDatabaseError> ???');
end; 
الرد
#4
جربت الكود لكن لم ينفع. هل من طريقة اخرى
با رك الله فيكم
الرد
#5
انا لا يحدث عندى اى مشكل
ارفقت لك ملفين هما
كود :
Unit3(*.pas, *.dfm)
قم بوضعهما فى مجلد CS (اسبدلهما بالملفين الموجودين مسبقا)


الملفات المرفقة
.rar   CS.rar (الحجم : 1,006 بايت / التحميلات : 24)
الرد
#6
بارك الله فيك
صحيح صار لايدخل شخص برقم شخص اخر لكن الرسالة لاخبار المستخدم لاتظهر
ومشكوور مرة اخرى
الرد
#7
السلام عليكم

رقم الخطاء فى هذه الحالة هو "9729"
لارسال رسالة على اساس هذا الخطاء نضيف مايلى :
كود :
if (E as EDBEngineError).Errors[0].ErrorCode = 9729 then ShowMessage(' ... ');

للاطلاع على ارقام الاخطاء هنا
يوجد مثال مرفق مع الدالفى يوضح هذه العمليات .
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم