بتاريخ: 6 أبريل 201016 سنة comment_189171 السلام عليك ورحمة الله وبركاتة ارجو المساعدة في كيفية كتابة triger خاص بإجازات الموظفين حيث انني ارفقت الجداول التي اعمل عليها .بحيث اريد من النظام عند تعبئة مدة الاجازة يذهب إلى ال feld الخاص برصيد الاجازات ويتم التأكد بأن الرصيد كافي ثم بعد ذلك يسمح بأدخال المدة المطلوبة واذا لم يكن كافي يعطي مسج بعدم توفر الرصيد المطلوب.وايضا بعد ادخال مدة الإجازة يتم خصم هذة المدة من رصيد الأجازات تلقائيا اما بالنسبة للمغادرات ايضا اريد ان يتم تجميع مدة هذة المغادرات في ال feld الخاص برصيد تراكم المغادرات وعندما تصبح هذة المغادرات 8 ساعات يتم احتسابها يوم اجازة وخصمها من رصيد الاجازات في جدول الاجازات وتسجيلها داخل جدول الاجازات بأسم تراكم مغادرات شكرا لكم جميعا ارجو المساعدة قدر الامكان EMP_LEAVES جدول وصف المغادرات Column Name Pk FK Null? Data Type CommentsEMP_NO 1 N NUMBER (6) رقم الموظفLEV_NO 1 N NUMBER (6) رقم المغادرةLEV_REQ_NO 1 N NUMBER (3) رقم طلب المغادرةLEV_REQ_DATE Y DATE تاريخ طلب المغادرةLEV_START_TIME Y DATE بداية المغادرةLEV_END_TIME Y DATE انتهاء المغادرةLEV_CANCEL Y VARCHAR2 (20 Byte) الغاء المغادرةLEV_REQ_DURATION N NUMBER (3) مدة المغادرةLEV_YER Y NUMBER (4) سنة المغادرة LEV_MONTH N NUMBER (2) شهر المغادرةLEV_BALANC N NUMBER (3) رصيد تراكم المغادرات EMP_VACATIONS جدول وصف الاجازات Column Name Pk FK Null? Data Type CommentsEMP_NO 1 N NUMBER (6) رقم الموظفVAC_NO 1 N NUMBER (6) رقم الاجازةVAC_REQ_NO 1 N NUMBER (3) رقم طلب الاجازةVAC_REQ_DATE Y DATE تاريخطلب الاجازةVAC_START_DATE Y DATE تاريخ بداية الاجازةVAC_END_DATE Y DATE تاريخ نهاية الاجازةVAC_CANCEL Y VARCHAR2 (20 Byte) الغاء الاجازةVAC_CANCEL_DATE Y DATE تاريخ الغاءالاجازةVAQ_REQ_DURATION N NUMBER (3) مدة الاجازة المطلوبة EMP_VBALNC جدول رصيد الاجازات Column Name Pk FK Null? Data Type CommentsEMP_NO 1 N NUMBER (6) رقم الموظفVAC_NO 1 N NUMBER (6) رقم الاجازةVAC_YEAR Y DATE سنة الاجازةVAC_ALLOWED_DURATION N NUMBER (3) مة الاجازه المسموحةVAC_RESET_ACCOUNT N NUMBER (3) رصيد الاجازات المتبقي VACATION_TYPE تعريف انواع الاجازات Column Name Pk FK Null? Data Type CommentsVAC_NO 1 N NUMBER (6) رقم الاجازهVAC_DESC Y VARCHAR2 (50 Byte) نوع الاجازة LEAVE_TYPES تعريف انواع المغادرات Column Name Pk FK Null? Data Type CommentsLEV_NO 1 N NUMBER (6) رقم المغادرةLEV_NAME N VARCHAR2 (50 Byte) نوع المغادرة تقديم بلاغ
بتاريخ: 7 أبريل 201016 سنة comment_189228 السلام عليكم ورحمة الله وبركاتهيمكنك استخدام الكود الخاص ب POST-CHANGE او WHEN-VALIDATE-ITEM للتاكد من مدة الاجازهوالكود المستخدم سوف يكون على هذا الشكل declare v_count number;v_count2 number;v_count3 number;beginv_count3 := VAC_END_DATE - VAC_START_DATE;select VAC_RESET_ACCOUNT , VAC_ALLOWED_DURATIONinto v_count , v_count2 from EMP_VBALNC where EMP_NO = :EMP_NO and VAC_NO = :VAC_NO;if v_count2> v_count3 then message('sssssssssssssssssssss')message('sssssssssssssssssssss')raise form_trigger_failure;elsif v_count> v_count3 then message('mmmmmmmmmmmm')message('mmmmmmmmmmmmmm')raise form_trigger_failure;end if;end;اما بالنسبه لخصم مدة الاجازه تلقائيا يمكنك استخدام ال POST-INSERTupdate EMP_VBALNC set VAC_RESET_ACCOUNT = VAC_RESET_ACCOUNT - :VAQ_REQ_DURATION where EMP_NO = :EMP_NO and VAC_NO = :VAC_NO;forms_ddl('commit');بالنسبه للجزء الثانى سوف يكون بنفس الفكره السابقه واذا احتجت للشرح برجاء ارسال الفورم وال create script مثل الجدول التالىCREATE TABLE EMP_LEAVES(EMP_NO NUMBER (6),LEV_NO NUMBER (6),LEV_REQ_NO NUMBER (3),LEV_REQ_DATE DATE,LEV_START_TIME DATE,LEV_END_TIME DATE,LEV_CANCEL VARCHAR2 (20 Byte),LEV_REQ_DURATION NUMBER (3),LEV_YER NUMBER (4) , LEV_MONTH NUMBER (2),LEV_BALANC NUMBER (3)); تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.