بتاريخ: 2 يونيو 200916 سنة comment_159042 السلام عليكم .أيها الاخوة احتاج لمساعدتكم في حل مشكلة overlapping لنفترض ان لدينا الاعمدة التالية :LABORID رقم العامل الوظيفيWROKID رقم عملية الاصلاح التي سيقوم بها STARTTIME وقت البدء بعملية الاصلاح ( وقت وتاريخ)ENDTIME وقت الانتهاء من عملية الاصلاح ( وقت وتاريخ )الآن انا بحاجة للمساعدة بالتأكد من انه لا يوجد تداخل overlapping لدى العامل ، أي بعبارة أخرى لا يمكن عمليا ان يقوم بعمليتي اصلاح مثلا بنفس الوقت وطبعا يوجد لدي جدول به جميع التفاصيل المذكور سابقا واحتاج لأن اقارن واتأكد ان كل عامل لدي قد قام بعمل واحد فقط خلال وقت واحد اي انه وقت انتهاء عملية الاصلاح رقم واحد مثلا هو قبل تاريخ بداية عملية الاصلاح رقم اثنين لنفس العامل .وعند حدوث تداخل او خطأ بالادخال ( كأن يبدأ عملية اصلاح جديدة قبل الانتهاء من عمله بعملية الاصلاح السابقة) يظهر لي جدول يخبرني برقم العامل ورقم عملية الاصلاح الاولى وبدايتها ونهايتها مع رقم عملية الاصلاح الثانية وبدايتها ونهايتها لاتأكد من وجود التداخل فعلا .فهل من مجيب ؟؟؟؟؟وجزاكم الله خيرا تقديم بلاغ
بتاريخ: 2 يونيو 200916 سنة comment_159047 السلام عليكم مبدئيا الدالة count هي هتحل لك المشكلة بمعنى انت بمعرفة رقم العامل هتعمل count له هل معه الان عملية اصلاح الان أم لا من خلال النتيجة لو = 1 سيتم معرفة ان معه عملية اصلاحوبالنسبة للتواريخ والوقت هتقارن بينهم بجملة if أعتقد لو هتستخدم الفورم هيكون الاجابة أوضح وأسهلأم أنت تريد تريجر على مستوى الداتا بيز للقيام بهذه المهمة تقديم بلاغ
بتاريخ: 3 يونيو 200916 سنة كاتب الموضوع comment_159091 السلام عليكم .شكرا لك اخي مصطفى على الرد ، انا احتاج لمقارنة جميع مهام لدى العامل الواحد للتأكد من انه لم يستلم المهمة الجديدة قبل انتهائه من المهمة السابقة لها ، واحتاج لعمل ذلك على جدول يحتوى حوالي 11000 مهمة تقريبا ، ولا استطيع عمله كفورم ولكن اظن انه كتريجر سيكون هو الحل .هل من الممكن ان تشرح الفكرة اكثر اخي الكريم ؟؟؟المشكلة اني لست متقدما بمجال pl/sql بالدرجة الكافية تقديم بلاغ
بتاريخ: 10 يونيو 200916 سنة comment_160045 [يسار][/يسار]select time,id into v_time,v_id from (select max(end_time) time ,work_id id into dummy_time from table-name group by work_id)where laborid=رقم العاملif :time <dummy_time then show_alert('alert_name','يوجد هناك عمل فى ساعة'||v_time ||'للموضف'||v_id||'مع'||:item name of emp||:time from canvas) ; raise from_trigger_failure;end if;على كل حال هيدا هوا أبسط الحلول و إزا كان فى هنيك أي مشكل أنا جاهز للمساعدة و للسرعة بالرد ممكن المراسله على الإيميل التالي[email protected] تقديم بلاغ
بتاريخ: 22 يونيو 200916 سنة كاتب الموضوع comment_161038 السلام عليكم .لقد قمت بحل المشكلة عن طريق SELFJOIN بالكود التالي SELECT A.LABORCODE AS LABORCODE, A.WORKID AS WORK_1, A.STARTDATE||' : '||TO_CHAR(A.STARTTIME,'HH24.MI') AS START_TIME_1, A.FINISHDATE||' : '||TO_CHAR(A.FINISHTIME,'HH24.MI') AS FINISH_TIME_1, B.WORKID AS WORK_2, B.STARTDATE||' : '||TO_CHAR(B.STARTTIME,'HH24.MI') AS START_TIME_2,B.FINISHDATE||' : '||TO_CHAR(B.FINISHTIME,'HH24.MI') AS FINISH_TIME_2 FROM LABTRANS A ,LABTRANS B WHERE A.LABORCODE = B.LABORCODE AND A.FINISHDATE = B.STARTDATE AND A.STARTTIME < B.FINISHTIME AND A.FINISHTIME > B.STARTTIME AND A.WORKID<> B.WORKID AND A.LABORCODE = &LABORID; حيث سيقوم بربط الجدول بنفسه ومقارنة القيم واظهار النتائج . تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.