بتاريخ: 29 أغسطس 200619 سنة comment_77509 ارجوا المساعدة منكم باقصى سرعة اقوم الان بانشاء قاعدة بيانات لفندق وتواجهنى مشكلة فى صفحة الحجز حينما اختار غرفة لكى اقوم بحجزها فى فترة زمنية معينة مستقبلا اريده اذا كانت الغرفة محجوزة فى ذلك التاريخ ان يظهر لي رساله يقول لى فيها ان الغرفة محجوزة فى ذلك التاريخ ولا يمكن حجزها مرة اخرى مع العلم اننى ادخل تاريخين تاريخ بداية الحجز وتاريخ نهايته:-مثال نفترض اننى حجزت غرفة 101 من الفترة 15/8/2006 مثلا وحتى يوم 20/8/2006 واننى بالفعل قمت بعمل تريجر يقوم بمقارنة التاريخ الذى ادخله بالتاريخ الموجود عنده ولكنه يقوم بمقارنة التاريخ فقط اي 15/8 و 20/8 فقط اما اذا ادخلت مثلا 17/8 وحتى 25/8 فانه لا يظهر الرسالة لعدم انطباق الشرط على الرغم بانه فى تلك الحالة فان الغرفة ستحجز مرتين فى وقت واحد فى الفترة المشتركة بين الحجزين وهى من 17/8 الى 20/8 اريد حلا يعالج تلك المشكلة فى الاربع حالات الخاصة بها وهم:- الحالة الاولى :- اذا ادخلت له تاريخ قبل الفترة المحجوزة فيها الغرفة بالفعل و ينتهى بعدها مثال من 14/8 الى 21/8 الحالة الثانية:-اذا ادخلت له تاريخ قبل الفترة المحجوزة فيها الغرفة بالفعل و ينتهى قبلهامثال من 14/8 الى 19/8 الحالة الثالثة:-اذا ادخلت له تاريخ بعد الفترة المحجوزة فيها الغرفة بالفعل و ينتهى بعدها مثال من 16/8 الى 21/8 الحالة الرابعة:-اذا ادخلت له تاريخ بعد الفترة المحجوزة فيها الغرفة بالفعل و ينتهى قبلها مثال من 16/8 الى 19/8 وشكرا على مساعدتكم تقديم بلاغ
بتاريخ: 7 سبتمبر 200619 سنة comment_78134 الأخ العزيز من وجهة نظري (لأن أنا عملت البرنامج ده من قبل ) أنك تعمل view بالغرف المشغولة عامة وعندما تأتي لتحجز غرفة جديدة ز يظهر لك رسالة اذا كان رقم الغرف موجود في هذا ال view وأعتقد ان هو دة الأفضل [email protected] تقديم بلاغ
بتاريخ: 7 سبتمبر 200619 سنة comment_78152 السلام عليكم ورحمة الله وبركاتههذا الـ trigger يقوم بمقارنة تواريخ الحجز create or replace trigger t_aaa before insert on aaa for each row declare aa number ; vv number ; yy number; begin select count(date1) into aa from aaa where :new.date1 between aaa.date1 and aaa.date2 and aaa.room = :new.room ; select count(date2) into vv from aaa where :new.date2 between aaa.date1 and aaa.date2 and aaa.room = :new.room ; select count(date1) into yy from aaa where date1 between :new.date1 and :new.date2 and aaa.room = :new.room ; if aa <> 0 or vv <> 0 or yy <> 0 then raise_application_error(-20001,' التاريخ مكرر '); end if; end; insert into aaa values (1 , '1/1/2006' , '15/1/2006' ); insert into aaa values (1 , '12/1/2006' , '25/1/2006' ); insert into aaa values (1 , '19/12/2005' , '1/1/2006' ); insert into aaa values (1 , '15/1/2006' , '1/2/2006' ); insert into aaa values (1 , '5/1/2006' , '12/1/2006' ); insert into aaa values (1 , '18/12/2005' , '15/2/2006' ); insert into aaa values (1 , '19/12/2005' , '31/12/2005' ); insert into aaa values (1 , '26/1/2006' , '4/2/2006' ); insert into aaa values (2 , '1/1/2006' , '15/1/2006' ); تم تعديل 10 سبتمبر 200619 سنة بواسطة jamal_rrkk تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.