بتاريخ: 2 يوليو 200916 سنة comment_161996 اخواني الكرام موضوعي كالتالي : لدي جدول فيه بيانات الاجازات لكل موظف فيه تاريخ بداية الاجازة وتاريخ نهاية كل اجازةوفي جدول الموظفين يوجد تاريخ التعيينالان اريد ان احسب الاجازات كل سنة مثلا لاول سنة سنجلب كل الاجازات التي تكون واقعة ما بين تار يخ التعيين + سنة طيب في السنة الثانية ماذا سنفعل وفي الثالثة وووووو علما انني اريد ان اجلب في الشاشة السنة الحالية تقديم بلاغ
بتاريخ: 2 يوليو 200916 سنة comment_162034 السلام عليكم أخي الكريم هل تريد مثلا عمل تقرير يكون به السنة الاولى له عدد الاجازات كدهالسنة الثانية كده والثالثة وهكذا إذن اعتقد أنك لازم تستخدم تاريخ التعيين كما ذكرت وتستخدم دالة add_months في جملة ال whereمثال ملحوظة الاعمدة من عندي where to_char(holiday,'yyyy')=round(to_number(to_char(hiredate,'yyyy'))+(add_months(hiredate,12*:xx)/12),0); طبعا ال xx سيكتبه به رقم السنة 1-2-3الشرط ده اضبطه حسب ماعندك اتمنى ان يحل لك الموضوع تقديم بلاغ
بتاريخ: 3 يوليو 200916 سنة كاتب الموضوع comment_162050 اخي الكريممشكور على الرد ولكن اريد العكس اريد عمل شاشة تبين لي الاجازات للسنة الحالية فقط وفي التقرير اريد عمل فكرتك ولكن الان اريد عمل شاشة ؟؟؟كيف تقديم بلاغ
بتاريخ: 3 يوليو 200916 سنة comment_162051 السلام عليكمأرجو توضيح سؤالك هذا كان سؤالك في اول الموضوع اريد ان احسب الاجازات كل سنة مثلا لاول سنة سنجلب كل الاجازات التي تكون واقعة ما بين تار يخ التعيين + سنة طيب في السنة الثانية ماذا سنفعل وفي الثالثة وووووو علما انني اريد ان اجلب في الشاشة السنة الحالية ممكن تشرح لنا الاسكربت الخاص بالجدول كي نتعرف على الشكل وبالتالي نعرف كيف سيكون الشرط تقديم بلاغ
بتاريخ: 3 يوليو 200916 سنة كاتب الموضوع comment_162054 table description :table name : leavecolumns الرقم المتسلسل للاجازات مربوط مع سيكونس leave.leave_id leave.emp_id رقم الموظف مربوط مع جدول الموظفينleave_date تاريخ الاجازة وامور اخرى لاتهم في هذا الموضوع اريد ان اجلب كل الاجازات للموظف بشرط التاريخ ؟ يكون ضمن السنة الحالية يعني لنفرض ان موظفعين في تاريخ 2-2-2007 الشاشة يجب ان تظهر اجازاته فقط في هذه السنة وهي من تاريخ 2-2-2008 وحتى 2-2-2009لاحظ ان التاريخ ما بين 2-2-2007 - 2-2-2008 لا اريد جلبها وذلك لاني اريد الاجازات خلال اخر سنة له ؟؟؟ اتمنى ان تكون وصلت الفكرة تقديم بلاغ
بتاريخ: 3 يوليو 200916 سنة comment_162081 السلام عليكماخي الحبيب ماهر...هل يوجد عندك جدول خاص بالاجازات ؟؟؟ اكيد انت عاملهورح يكون جدول الاجازات مربوط بجدول الموظفين صح ؟بامكانك عمل شاشة استعلام تقوم فيها بالاستعلام عند كل اجازات الموظف خلال السنه الحاليةبامكانك البحث او الاستعلام عن طريق السنه فقط متلا ( 2009 ) او تعمل من تاريخ ... الى تاريخ ولكن النتيجه نفسها اي الاجازات لسنه واحده فقط... تم تعديل 3 يوليو 200916 سنة بواسطة PALI.ORACLE تقديم بلاغ
بتاريخ: 3 يوليو 200916 سنة comment_162088 السلام عليكم اخى ماهر ,, كلام الاخ Pali.oracleصحيح .. حيث انه كيف سوف تحسب عدد الايام بدون ان يكون عند قيمه مخزنه .. و سوف اعرض عليك اخى فكرتين واحدة منها هى للاخ Pali.oracle و الثانيه حاصه بى ---------------------------- جدول بيه .. 32 عمود خاص بايام الشهر .و رقم الموظف . و كل يوم تحط مثلا 1 و يوم الغياب يبقا بnull فى الاخر تحسب ال null لسجل واحد .. ده حيسعدك فى عرفه الايام بالظبط - تعمل جدول فيه عمودين .. عمود فيه رقم الاجازات و رقم الموظق .. و كل يوم يغيب فيه .. تضيف رقم1 فوق القديم فتعرف التوتل فى الاخر مة واحدة و بالتوفيق مش عارف انا افدتك ولا لا بس ربنا يوفقك تقديم بلاغ
بتاريخ: 3 يوليو 200916 سنة comment_162101 اشكك اخي احمد على التعقيب...فكرتك حلوة كمان...ولكن بالنسبه للاجازات معظم البرامج تعمل بهذه الطريقة..ننتظر رأي اخي ماهر تقديم بلاغ
بتاريخ: 3 يوليو 200916 سنة comment_162104 السلام عليكماعتقد ان جدول ال leaveبه بيانات الاجازات لكن السؤال كيفية حفظ السجلات داخل هذا الجدول الالية يعنيارجوا وضع مثال على شكل عملية الحفظ البيانات داخل هذا الجدولعموما ده مثال select count(*) into :no_hloy from leave where emp_id=:emp_id and (to_char(leave_date ,'yyyy') between round(to_number(to_char(hiredate,'yyyy'))+(add_months(hiredate,12*:xx-1)/12),0) and round(to_number(to_char(hiredate,'yyyy'))+(add_months(hiredate,12*:xx)/12),0)); طبعا على اساس انك بتحفظ السجلات من تاريخ بداية الاجازة إلى نهايتها سجل سجل في جدول ال leave يعني لو الاجازة 5 أيام ستكون عدد السجلات 5 أيام وبكده سيكون العملية بسيطة بالنسبة للايتم xx ده رقم السنة الاي بعد تعيينه فمثلا لو السنة ال 5 سيقوم الاستعلام السابق بجلب البيانات من السنة الرابعة الى الخامسة وهكذا ويمكنك الحصول على قيمة xx تلقائيا من خلال طرح تاريخ اليوم -تاريخ التعيين والناتج تقسمه على 365 يوم وهكذا او يمكنك ادخالها يدويا يمكنك التعديل فيه بحسب ماعندك منتظر ردك تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة كاتب الموضوع comment_162200 declare x date; y date; z date; m number; n number; begin select to_number(to_date( sysdate,'dd/mm/yyyy')-to_date(CONTRACT_START_DATE,'dd/mm/yyyy')) into n from contract; select n / 365 into m from dual; select leave.leave_id into :leave_id from leave , contract where leave.leave_date between round(to_number(to_char(contract.CONTRACT_START_DATE,'yyyy'))+(add_months(contract.CONTRACT_START_DATE,12*m-1)/12),0) and round(to_number(to_char(contract.CONTRACT_START_DATE,'yyyy'))+(add_months(contract.CONTRACT_START_DATE,12*m)/12),0)); message(n); message(m); end; اخي الكريم لم يعمل الكود حيث انني اريد جلب الاجازات في لاخر سنة فقط من تاريخ التعيين تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة كاتب الموضوع comment_162206 select to_number(to_date(sysdate,'dd/mm/yyyy')-to_date(CONTRACT_START_DATE,'dd/mm/yyyy')) /365-1into v_diff from contract; اخي الكريم وضعت هذا الكود وهو يعطي الفرق بين تاريخ التعيين وتاريخ اليوم ناقص سنة يعني لو انه موظف منذ 4 سنوات سيعطي 3 سنوات الان ماذا لو عملنا بعد هذا الكود زيادة سنة باستخدام add_months حاولت فيها ولكن بلا نتيجة لا ادري ما الحل؟ تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة comment_162207 هو انا مش فاهم اوي المطلوب انا هقولك وانت تقوللي انا فهمت صح ولا لأ ؟؟انت عندك تاريخ اجازة مسجل في جدول ... صح ؟؟وعايز تجيب رقم الموظف اللي تاريخ اجازته ده تقع ما بين تاريخ النهارده واخر تاريخ قام فيه باجازه ؟؟؟وبفرض ان الاجازات سنوية ، يعني كل 365 يوم بياخد اجازة سنوية .... صح ؟؟؟المهم : انا عملتلك مثال على جدول EMPLOYEES بتاع HR رقم الموظف ، وتاريخ التعيين , وتاريخ اخر سنة ( المستحق فيه الاجازات ) بشرط ان يكون اخر سنة ده عبارة عن تاريخ التعيين مضاف اليه عدد سنين الاجازة ، يعني لو كان خد 5 اجازات ، كده معناه ان اخر تاريخ يستحق معه الاجازة ، تاريخ التعيين + 5 سنوات مش عارف انا شخصيا مش عارف اوضح المثال ... بس يارب تكون الفكرة وصل SELECT E.EMPLOYEE_ID ,E.HIRE_DATE ,ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) LAST_YEER FROM EMPLOYEES E WHERE :MY_DATE BETWEEN (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) ) AND SYSDATE تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة كاتب الموضوع comment_162211 يا اخوان مش معقول لحد الان ولا واحد فاهمني انا عندي موظف له عدد اجازات معينة خلال السنة الواحدةاريد الاستعلام عن اجازات اخر سنة اخر سنة المقصود فيها على اعتبار انه مازال على راس عمله مثال : موظف اشتغل في 1/2/2005 كم سنة له بيشتغل 4 سنين انا بدي اجيب اجازات اخر سنة له يعني من الفترة 1/2/2008 الى تاريخ 1/2/2009ولكن ظهرت مشكلة جديدة ماذا عن باقي الايام المتبقية من 1/2/2009 - اليوم ؟؟؟ تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة comment_162213 يافندم المثال اللي انا وضعته لحضرتك يأدي الغرض اللي حضرتك عايزه واللي انت ذاكره بمالثال لو واحد تاريخ تعين 1-2-2005 ، حضرتك اخر سنة بالنسبة لي ( على اعتبار ان اجزته سونيا منتظمة ) يعني هضيف سنة كل مرة يبقى المفروض عايز تجيب الداتا بتاعته على اعتبار انا اخر سنة ده 1-2-2008 إلى تاريخ اليوم ، يا أما حضرتك عايز لحد 1-2-2009 ، وال5 شهور الباقيه مش يتحسبوا .... ولو ده اللي الحضرتك تقصده يبقى المثال يوفي بالغرض ان شاء الله****************************لي ملاحظة : احسست من كلام سيدتك انك متنرفز من الاعضاء ان محدش فاهمك ، معذرة اي عضو بيخش بيشارك وبيحاول يرد على حضرتك اكيد مستقطع جزء من وقته عشان يرد ويحاول يساعد ، فأكيد كلمة الشكر اولى من العتاب حتى ولو الحل خطأ او مش مفهوم .... ده نصيحة اخوية ولا تحمل اي صفة تاني ، اخوية ولله تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة كاتب الموضوع comment_162218 اخي الكريم ماذا تقصد ب WHERE :MY_DATE تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة comment_162221 معلشي على المقاطعةأعتقد أن كلام أخي عبدالله صحيح احسست من كلام سيدتك انك متنرفز من الاعضاء ان محدش فاهمك ، معذرة اي عضو بيخش بيشارك وبيحاول يرد على حضرتك اكيد مستقطع جزء من وقته عشان يرد ويحاول يساعد ، فأكيد كلمة الشكر اولى من العتاب حتى ولو الحل خطأ او مش مفهوم .... ده نصيحة اخوية ولا تحمل اي صفة تاني ، اخوية ولله أنا لاحظت أن أخي ماهر يغير مطلوبه في كل مشاركةأخي الكريم المفروض توضح مطلوبك بكل توضيح بسي انت عايز الحل بدون ماتطرح مشكلتك بكل الوضوح تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة comment_162223 تاريخ الاجازة بس بشرط انه يكون ما بين تاريخ اخر سنة وتاريخ اليوم ... ده معنى الشرط تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة كاتب الموضوع comment_162224 اخواني الكرام مشكورين جميعا على جهودكم الجبارة ولكن لا اقبل اتهاماتكم الي بخصوص اني لا اشكر احدا او انني اغير المطلوب انا اعرف ما اقول واتهاماتكم هذه لا اقبلها ابدا اتحداكم ان وجدتم لي مشاركة بدون ان اشكر صاحبها ومع كل هذا مشكورين وحتى لو كان كلامكم صحيح ارجو ان تسامحوني وان كان كلامك خطـ فأنا مسامحكم احنا اخوان وحبيايب يجمعنا دين واحد ومنتدى واحد يستظل الكل بظله ليتعلم ويعلم الاخرين مشكورين مشكور كل من قرا الموضوع ومن رد عليه وسأجرب مشاركاتكم وخصوصا اخر مشاركة للاخabdu1_far وشكرا تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة comment_162231 يا اخي هون عليك الموضوع مش محتاج اننا نزعل ولا نتضايق من بعض ومعذرة لو كنت اسأت فهمك منذ البداية ، بس الكلام اللي انا ذاكرته كان من باب النصيحة والله ، لاني حسيت انك متضايق ان الناس مش فهماككان فيه نصيحة واحد صاحبي دايما كان بيقولها لي : كان بيقوللي خد النصيحة دايما بغض النظر عن طريقة الناصح لانه ممكن يكون فظ ، فمعذرة لو كنت فظ في توجيه النصيحة ، سيبك بأه من اسلوب النصيحة واعتبرها انها نصيحة عامة لكل الناس ، لان الحقيقة الموضوع اتكرر من اكتر من عضو ، ومكنتش بحب اتكلم عشان مشاعر الناس ، معلش بأه جت فيك .... سامحنى يابباشا وتقبلني اخ وصديق لكسلام عليكم تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة كاتب الموضوع comment_162232 انا مش زعلان بالعكس انا كتير مبسوط وما صار شي وسامحنا صحيح لسه الكود مش زابط بس مش مشكلة هاهاهاها حبيبي مشكور تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة comment_162235 مش فاهم ليه بس مش زابط ... على العموم انا هعملك ان شاء الله الكود على الجدول بتاعك تقديم بلاغ
بتاريخ: 5 يوليو 200916 سنة comment_162242 ده الكود بعد ربطه بجدول الLEVE مع جدول EMPLOYEES الموجود في اسكيمة HRفي حالة اخر سنة عملية إلى تاريخ اليوم SELECT E.EMPLOYEE_ID ,E.HIRE_DATE ,ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31)-365 LAST_YEER,L.LEAVE_DATE FROM EMPLOYEES E ,LEAVE L WHERE E.EMPLOYEE_ID=L.EMP_ID AND LEAVE_DATE BETWEEN (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) )-365 AND SYSDATE وده في حالة اخر سنة عملية لحد بداية السنة العملية الحالية ، يعني لو السنة الاخير العملية ليه 10-5-2008 ، يبقى بداية السنة الحالية بتاعته 10-5-2009 ، والشهرين الباقين من تاريخ اليوم شوف انت بأه عايز تعالجهم ازاي SELECT E.EMPLOYEE_ID ,E.HIRE_DATE ,ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31)-365 LAST_YEER,L.LEAVE_DATE FROM EMPLOYEES E ,LEAVE L WHERE E.EMPLOYEE_ID=L.EMP_ID AND LEAVE_DATE BETWEEN (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) )-365 AND (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) ) يارب يكون الحل صحيح ... وربنا يوفقكرفق صورة بالبيانات الموجوده في جدول LEVE للاختبار تم تعديل 5 يوليو 200916 سنة بواسطة abdu1_far تقديم بلاغ
بتاريخ: 6 يوليو 200916 سنة comment_162340 السلام عليكم اخى ماهر و كل الاعضاء ليه بنصعب الكود .. هو لو احنا سهلنا الفكرة ووضعنا فعلا جدول ولا عمود يعنى مش بشكر فى فكرتى .. بس انا بسؤال شؤال عام هو ليه بنصعب الكود .. و بنصعب الفكرة .. ؟؟ ليه منحولش يبقا الحل بيسط و سهل انا طبعا مش عارف لحد دلوقتى اتحلت ولا لا ؟؟ بس المشكله انى مش ايف الموضوع بالصعوبه ديه .. يمكن علشان فكرت فى حلها بشكل تانى ؟؟الله اعلم ربنا يوفق الجميع تقديم بلاغ
بتاريخ: 6 يوليو 200916 سنة كاتب الموضوع comment_162365 ده الكود بعد ربطه بجدول الLEVE مع جدول EMPLOYEES الموجود في اسكيمة HRفي حالة اخر سنة عملية إلى تاريخ اليوم SELECT E.EMPLOYEE_ID ,E.HIRE_DATE ,ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31)-365 LAST_YEER,L.LEAVE_DATE FROM EMPLOYEES E ,LEAVE L WHERE E.EMPLOYEE_ID=L.EMP_ID AND LEAVE_DATE BETWEEN (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) )-365 AND SYSDATE وده في حالة اخر سنة عملية لحد بداية السنة العملية الحالية ، يعني لو السنة الاخير العملية ليه 10-5-2008 ، يبقى بداية السنة الحالية بتاعته 10-5-2009 ، والشهرين الباقين من تاريخ اليوم شوف انت بأه عايز تعالجهم ازاي SELECT E.EMPLOYEE_ID ,E.HIRE_DATE ,ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31)-365 LAST_YEER,L.LEAVE_DATE FROM EMPLOYEES E ,LEAVE L WHERE E.EMPLOYEE_ID=L.EMP_ID AND LEAVE_DATE BETWEEN (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) )-365 AND (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) ) يارب يكون الحل صحيح ... وربنا يوفقكرفق صورة بالبيانات الموجوده في جدول LEVE للاختبار اخي الكريم مشكوووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووروفعلا هذا هو الكود المناسب في المكان المناسب ولكن عندي تعليق بسيط على الكود لماذا عندما يكون الموظف تعين في هذه السنة الحالية يرجع التاريخ سنة للاجازات وساوضح في الصورة ما اقصد شرح الصورة : موظف تعين في 1/7/2009لاحظ انه رجع سنة مع انه للعلم قام الكود بجلب اجازاته وهي صحيحةشيء اخر وهو لماذا تظهر هذه الرسالة في الصورة علما ان البلوك ليس databaseواخيرا اضع لكم الكود على الفورم :declare -----------leave----------------------- cursor emp_leave is SELECT E.EMP_ID ,l.leave_id,E.HIRE_DATE ,ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31)-365 LAST_YEER,L.LEAVE_DATE FROM EMPLOYEES E ,LEAVE L WHERE E.EMP_ID=l.leave_emp_id AND LEAVE_DATE BETWEEN (ADD_MONTHS(E.HIRE_DATE,(TO_DATE(SYSDATE)-TO_DATE(E.HIRE_DATE))/31) )-365 AND SYSDATE; --------------------------------------- begin -----------leave----------------------- open emp_leave ; loop next_record; fetch emp_leave into :leave.emp_id,:leave.leave_id,:leave.hire_date,:leave.year,:leave.leave_date; exit when emp_leave%notfound; end loop; close emp_leave; exception when no_data_found then message('لا يوجد بيانات'); message('لا يوجد بيانات'); end; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.