سلطان الحارثي بتاريخ: 29 أغسطس 2006 تقديم بلاغ مشاركة بتاريخ: 29 أغسطس 2006 السلام عليكم ورحمة الله وبركاتهاريد دالة تعمل الأتي :تزيد على الرتب العلاوة السنوية 200 ريال عندما يكمل الموظف سنة من تاريخ التعيين في جدول الموظفين.تاريخ تعيين الموظف 1/8/1425 هل ممكن ؟؟اسم الجدول empرقم الموظف empnoاسم الموظف empnameتاريخ التعيين constartالراتب salaryمع العلم ان عمود التاريخ من نوع number عدد خاناتة 8 يمكن استخدام دالة substr ؟ارجو ان اكون اوظحت المشكلة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
hobaa بتاريخ: 29 أغسطس 2006 تقديم بلاغ مشاركة بتاريخ: 29 أغسطس 2006 فكرهيمكن عمل ذلك عن طريق اضافة حقل يسجل فيه تاريخ اخر علاوة . عمل cursor يجلب قيمة الحقل المضاف و يطر من تاريخ الجهاز فأذا كانت النتيجه سنه تقوم بعمل العلاوه للموظف و عمل تحديث للحقل المضاف بحيث يكون تاريخ اليوم .هى ممكن تكون مش صح اوى بس انت ممكن تظبطهاايهاب وجدى اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد علي الحيلان بتاريخ: 29 أغسطس 2006 تقديم بلاغ مشاركة بتاريخ: 29 أغسطس 2006 عزيزي سلطان الحارثيالسلام عليكم ورحمة الله وبركاته:-اولا- هل عندما تجلب تاريخ الجهاز الى برنامجك هجري – ام ميلاديا ذا كان ميلادي لابد من تحويله اولا الى هجري حيث توجد داله في المنتدى تعمل التحويلبعدة طرق0اذا الكلام على اساس انه عربي:-حول التاريخ الى رقم هكذاحقل تاريخ الجهاز الذي اتفقنا على انه هجري اسمه date1 امامنا هكذا 01/08/1425DeclareDATE_date number(8);begin:GLOBAL.DATE_date :=substr(:DATE1,1,4) *354 + substr(:DATE1,6,2)* 30 + substr(:DATE1,9,2)* 1; exception when VALUE_ERROR then null; end;اذا حولنا تاريخ الجهاز الهجري الذي اسمه date1 الى رقم واصبح عام واسمه GLOBAL.DATE_dateثانيا - أعمل المقارنه بينه وبين الحقل في الجدول emp واسمه constartواعتقد ان المقارنه سهله جدابالتوفيق ياخي ،،،،،،،،، اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
basilt بتاريخ: 2 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 2 سبتمبر 2006 السلام عليكم " صديقي سلطان, انت بحاجة هنا الى 3 أمور :1) فنكشن او شاشة مستقلة تعمل لها تنفيذ لتعمل على زيادة راتب الموضفين الذين يستحقون ذلك بمقدار الزيادة 200 ريال .2) اضافة عمود جديد يمثل تاريخ اخر زيادة لنسمه مثلا Last_increase_salary . و في البداية قبل تشغيل البرنامج وتنفيذ الفنكشن يجب ان يكون هذا الحقل الجديد يحتوي على اخر تاريخ الزيادة لجميع الموظفين , لأننا سوف نستخدمه لاحقا لتحديد ان الموظف متى تم اخذ اخر زيادة له ثم اذا كان يستحق هذة الزيادة عمل update على التاريخ ووضع تاريخ الزيادة الجديدة .. وهكذا على مستوى كل موظف , وكذلك في كل سنة . 3) عرف item على الفنكشن وادخل به تاريخ الزيادة السنوية لشهر معين . لنسمه enter_increase_date ثم ..طبعا في داخل الفنكشن عمل cursor على أرقام الموظفين , شرط ان يكون الفرق بينهما سنة Last_increase_salary- enter_increase_date = 1 yearأذا تحقق الشرط اعمل ,update emp set salary = salary +200 Last_increase_salary = Last_increase_salary + 1 yearwhere empno = i.empno وفقط .. بذلك تكون حققت الزيادة المطلوبة للموظف في كل سنة بموعدها . والسلام عليكم . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أبو الروض بتاريخ: 2 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 2 سبتمبر 2006 أخ سلطان أنا عملت مشروع شئؤون الموظفين الخاص بالحكومة في المملكة العربية السعودية وقد عملت هذه الفكرة وهي تعمل بشكل صحيح والحمد لله فقط أريد أن أعطيك الجداول والباكيج المسويه ولكن أن خارج مدينة الرياض فقط أمهلني 5 أيام لحين العودة وإن شاء الله لن أبخل عليك ولكن لاتنسى الدعاء حتى ذلك الحين والله الموفق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أبو الروض بتاريخ: 5 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2006 أولا : قم بإضافة حقلين في الجدول الرئيسي وهما INCREMENT_FLAG_AFTER NUMBER(5) YEAR_ID NUMBER(5); وتقوم بعمل بروسيجر يعمل رن أتوماتيكي بحيث يعمل UPDATE كل سنة ويضع لكل موظف وهكذا عند مناداة الأشخاص كل سنة تقوم بعمل UPDATE لتغيير السنة إلى السنة الحالية أما الحقل الأول INCREMENT_FLAG_AFTER فعند تحويل السنة تكون القيمة 1 وعند منح الموظفين علاوة تتحول إلى 2فبهذه الحالة عند مناداة البروسيجر لعمل علاوة تقوم بمناداة السنة والحالة تكون 1 وعكس ذلك لايقوم بالمناداة وإليك البوسيجر الذي يقوم بعمل كل الذي ورد أعلاه CREATE OR REPLACE PROCEDURE SET_NEW_YEAR IS CURSOR C1 IS SELECT year_id FROM HR_PERSONS ; -- REC C1%ROWTYPE; v_year_id number; V_DATE NUMBER; V_DATE_ARABIC NUMBER; BEGIN SELECT TO_NUMBER(TO_CHAR(SYSDATE,'YYYY','NLS_CALENDAR=''arabic Hijrah''')) INTO V_DATE FROM DUAL; OPEN C1; LOOP FETCH C1 INTO v_year_id; IF v_year_id <> V_DATE THEN UPDATE HR_PERSONS SET YEAR_ID = V_DATE; UPDATE HR_PERSONS SET INCREMENT_FLAG_AFTER = 1; END IF; EXIT WHEN C1%NOTFOUND; END LOOP; CLOSE C1; COMMIT; END; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
haas78 بتاريخ: 7 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 7 سبتمبر 2006 ابو الروض حبيبي لازم يكون موقع االاكزت كوندشن بعد ما تعمل فش من الكيرزور وشكراً أولا : قم بإضافة حقلين في الجدول الرئيسي وهما INCREMENT_FLAG_AFTER NUMBER(5) YEAR_ID NUMBER(5); وتقوم بعمل بروسيجر يعمل رن أتوماتيكي بحيث يعمل UPDATE كل سنة ويضع لكل موظف وهكذا عند مناداة الأشخاص كل سنة تقوم بعمل UPDATE لتغيير السنة إلى السنة الحالية أما الحقل الأول INCREMENT_FLAG_AFTER فعند تحويل السنة تكون القيمة 1 وعند منح الموظفين علاوة تتحول إلى 2فبهذه الحالة عند مناداة البروسيجر لعمل علاوة تقوم بمناداة السنة والحالة تكون 1 وعكس ذلك لايقوم بالمناداة وإليك البوسيجر الذي يقوم بعمل كل الذي ورد أعلاه CREATE OR REPLACE PROCEDURE SET_NEW_YEAR IS CURSOR C1 IS SELECT year_id FROM HR_PERSONS ; -- REC C1%ROWTYPE; v_year_id number; V_DATE NUMBER; V_DATE_ARABIC NUMBER; BEGIN SELECT TO_NUMBER(TO_CHAR(SYSDATE,'YYYY','NLS_CALENDAR=''arabic Hijrah''')) INTO V_DATE FROM DUAL; OPEN C1; LOOP FETCH C1 INTO v_year_id; IF v_year_id <> V_DATE THEN UPDATE HR_PERSONS SET YEAR_ID = V_DATE; UPDATE HR_PERSONS SET INCREMENT_FLAG_AFTER = 1; END IF; EXIT WHEN C1%NOTFOUND; END LOOP; CLOSE C1; COMMIT; END; 77982[/snapback] اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
شجووون بتاريخ: 16 نوفمبر 2007 تقديم بلاغ مشاركة بتاريخ: 16 نوفمبر 2007 اذا كان التاريخ ميلادي وماهي افضل طريقه لاضافه علاوه على الراتبارجوا المساعده اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
s_devlop بتاريخ: 21 نوفمبر 2007 تقديم بلاغ مشاركة بتاريخ: 21 نوفمبر 2007 الف مليون شكر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.