الانتقال إلى المحتوى

معالجة الأخطاء


gida

Recommended Posts

أريد عمل libaray
حيث يتم استخدامها بكل البرامج وتعمل علي معالجة الأخطاء التي تنتج ويكون اظهار الرسالة بالنص العربي حتي يتمكن المستخدم من معرفة وفهم الخطأ بدلا من اخطاء الform
المعتادة التي تكون غير مفهومة من قبل المستخدم لاستخدامها مصطلحات باللغة الانجليزية ولا تفهم وارجو ان تكون شاملة لأخطاء ال form التي تبدأ ب frm_
و أخطاء التي تبدأ ب ora_
وشكرا مسبقا للمساعدة وارجو الرد سريعا للحاجة.

رابط هذا التعليق
شارك

أخي العزيز أرجوا نقل هذا الموضوع إلى منتدى الفورم لأنه الأنسب أما بالنسبة لإنشاء library فأنا أيضاً أستحث الأخوة بالمنتدى بإيضاح طريقة إنشاءه أما بالنسبة لرسائل الأخطاء فيوجد لديك نوعين إما رسائل MESSAGE أو رسائل ERROR وتضيف أحد التراجرين في WHEN-NEW-FORM-INSTRANT مثلاً ON-ERROR وتكتب

DECLARE
ERRONO ERROR_CODE;
ERROTX  ERROR_TEXT;
ERROTP  ERROR_TYPE ;
BEGIN IF ERRONO = 40500 THEN 
MESSAGE ("تمت عملية الحفظ بنجاح");
MESSAGE ("تمت عملية الحفظ بنجاح");
ELSE 
MESSAGE (ERROTP||'-'||ERRONO||' :'||ERROTX);
END IF;
END;



طبعاً على فرض أنه رقم رسالة إتمام عملية الحفظ هي 40500 لأني ناسي رقمها الآن
-----------------------------------------
إبراهيم بخش- المدينة المنورة

رابط هذا التعليق
شارك

السلام عليكم
لإظهار الرسائل باللغة العربية يجب عمل ذلك بإضافة جدول يمكن تسميته MESSAGES كما يلي :
CREATE TABLE MESSAGES
( MESSAGE_CODE NUMBER(6) NOT NULL,
ENGLISH_TEXT VARCHAR2(80 BYTE) NOT NULL,
ARABIC_TEXT VARCHAR2(80 BYTE));
CREATE UNIQUE INDEX MEE_PK ON MESSAGES(MESSAGE_CODE);
ALTER TABLE MESSAGES ADD (CONSTRAINT MEE_PK PRIMARY KEY(MESSAGE_CODE));
وهو سوف يحوي الأخطاء باللغتين العربية والانكليزية, بعد تعبئته بالأخطاء ومعانيها أو شرحها يمكن عمل PROCEDURE كما يلي :
PROCEDURE SHOW_MESSAGE(P_MESSAGE_CODE NUMBER) IS
CURSOR C1 IS SELECT * FROM MESSAGES WHERE MESSAGE_CODE=P_MESSAGE_CODE;
REC C1%ROWTYPE;
X NUMBER;
BEGIN
OPEN C1;
FETCH C1 INTO REC;
IF C1%NOTFOUND THEN
MESSAGE(P_MESSAGE_CODE||' '||'Please, Add the new message to the database');
MESSAGE(P_MESSAGE_CODE||' '||'Please, Add the new message to the database');
ELSE
IF REC.ARABIC_TEXT IS NOT NULL THEN
MESSAGE(rec.message_code||'...'||REC.ARABIC_TEXT);
MESSAGE(rec.message_code||'...'||REC.ARABIC_TEXT);
ELSE
MESSAGE(rec.message_code||'...'||REC.ENGLISH_TEXT);
MESSAGE(rec.message_code||'...'||REC.ENGLISH_TEXT);
END IF;
END IF;
END;

ويمكن وضعه إما في LIBRARY ومن ثم ربطها مع الفورم أو إضافته إلى قائمة PROGRAM UNITS في الفورم
وبعدها وعلى مستوى ال TRIGGERS في الفورم :
ON THE FORM TRIGGERS LEVEL PUT THE :
ON-MESSAGE :
SHOW_MESSAGE(MESSAGE_CODE);

ON-ERROR :
if error_code in (40508,40509,40510) and error_type= 'FRM' THEN
message(to_char(dbms_error_code)||': '||dbms_ERROR_TEXT);
message(to_char(dbms_error_code)||': '||dbms_ERROR_TEXT);
ELSE
SHOW_MESSAGE(ERROR_CODE);
END IF;

أرجو أن تستفيدوا من هذه الآلية ودمتم.

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية