بتاريخ: 25 ديسمبر 200520 سنة comment_55456 قمت بعمل برنامج مخازن واحد الفورم يسجل فيها المستخدم حركات الصرف واخرى يسجل فيها حركات الاضافة للاصناف الخاصه بهذا المخزن وقد قمت بعمل جدول مؤقت يتم تسجيل حركات الصرف والاضافة على هذا الجدول الى ان يقوم المستخدم بمراجعة بياناته والتاكد من صحتها ثم يضغط على زرار لترحيل حركات الصرف والاضافة الى جدول اخر مستديم بحيث انه بعد الترحيل يصبح غير قادر على التعديل في البيانات مع العلم باني قمت بعمل جدول ERR_MSG سجلت فية كود معظم الرسائل التي تظهر من الاوراكل وترجمت نصها باللغه العربية ليسهل فهمها على المستخدم ومن ضمنها الرسائل التي تظهر بالفعل وكتبت الكود التالي في ON-ERROR Trigger DECLARE ERROR_MSG VARCHAR2(250); ER VARCHAR2(10) :=ERROR_TYPE||'-'||TO_CHAR(ERROR_CODE); CURSOR E_MESSAGE IS SELECT E_MSG FROM ERR_MSG WHERE UPPER(E_CODE)=ER;BEGIN OPEN E_MESSAGE; FETCH E_MESSAGE INTO ERROR_MSG; IF E_MESSAGE%FOUND THEN MESSAGE(ERROR_MSG); ELSE MESSAGE(ERROR_TYPE||'-'||TO_CHAR(ERROR_CODE)||' '||ERROR_TEXT); END IF; CLOSE E_MESSAGE;END;وكتبته ايضا في ON-MESSAGE Trigger: ولكن هناك اكثر من مشكلة :1- عند الضغط على زرار الحفظ تظهر رسالة FRM-40405 : NO CHANGES TO APPLYوتظهر بعدد من المرات مماثل لعدد الريكورد التي يقوم المستخدم بادخالها اي لو قام المستخدم بتسجيل 20 حركة صرف في الفورم تظهر الرساله السابقة 20 مرة وهكذا و هذا شىء مزعج جدا للمستخدم واحيانا قليلة تظهر الرسالة التي اضفتها في الجدول ERR_MSG 2- عند الضغط على زرار الترحيل تظهر نفس الرسالة FRM-40405 : NO CHANGES TO APPLY وبعدد من المرات مماثل لعدد الريكورد التي يقوم المستخدم بادخالها 3- وعند الضغط على زرار الخروج تظهر رسالة do you want to save changesواذا ضغطت على NO لا يحفظ البيانات وتفقد مع العلم اني وضعت كلمة COMMIT بعد عبارة INSERT في زرار الترحيل واذا ضغطت على YES تظهر رسالة FRM-40405 : NO CHANGES TO APPLY مرة اخرى ووجدت في المساعد الخاص باوراكل الكود التالي : Key-EXIT Trigger: IF system.form_status = 'CHANGED' THEN POST; END IF; ولكن مازالت نفس الرسائل تظهر ماذا افعل للتخلص من هذة الرسائل المزعجة تقديم بلاغ
بتاريخ: 25 ديسمبر 200520 سنة comment_55460 اولا اختي الكريمة بما انكي تقومي بعمل transaction يعني ارسال بيانات من جدول الى اخر عن طريق الفورم وهذه الرسالة تظهر بسبب عدم وجود حركات على الفورم لذلكعليكي بتطبيق التاليمكان جملة ال COMMITاستخدمي الامر FORMS_DDL('COMMIT'); في التريجر ON-ERROR Trigger عدلته حيث اضفت رقم الكود ليستثنيه DECLARE ERROR_MSG VARCHAR2(250); ER VARCHAR2(10) :=ERROR_TYPE||'-'||TO_CHAR(ERROR_CODE); CURSOR E_MESSAGE IS SELECT E_MSG FROM ERR_MSG WHERE (UPPER(E_CODE)=ER AND ER<>'FRM-40405' ); BEGIN OPEN E_MESSAGE; FETCH E_MESSAGE INTO ERROR_MSG; IF E_MESSAGE%FOUND AND THEN MESSAGE(ERROR_MSG); ELSE MESSAGE(ERROR_TYPE||'-'||TO_CHAR(ERROR_CODE)||' '||ERROR_TEXT); END IF; CLOSE E_MESSAGE; END; نصيحة عند التخزينلاتقومي بتخزين الجدول عند كل عملية اضافة واجعلي عملية الترحيل واحدة لكي لا تقعي حيص بيصلذلك بعد جملة ال INSERT اضيفي التالي FORMS_DDL('COMMIT'); EXCEPTION WHEN OTHERS THEN DECLARE server_err NUMBER := abs(DBMS_ERROR_CODE); server_msg VARCHAR2(2000) := DBMS_ERROR_TEXT; BEGIN FORMS_DDL('ROLLBACK'); mESSAGE('خطأ في عملية الترحيل'||to_char(server_err) ||'-'||server_msg); end; END; تم تعديل 25 ديسمبر 200520 سنة بواسطة Admin05 تقديم بلاغ
بتاريخ: 21 مارس 200619 سنة comment_63768 تم اجراء جميع الخطوات السابقة ولم تتغير هذا الرسالة على الفورم حتى الآن ، وقد عملت هذه الاوامر فى ON _message تقديم بلاغ
بتاريخ: 30 مارس 200619 سنة comment_64856 اختي الكريمة....بعد كتابة الامر commitاكتبيClear Message ;و ان شاء الله يزبط تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.