بتاريخ: 7 مايو 201214 سنة comment_224176 مرحبا جميعا,اود ان اطرح مشكلة وهي المشاركة الأولى لي معكم في هذا المنتدى القدير,مشكلتي:عندي فورم يوجد به check box وتمت البرمجة على اساس انه عندما يقوم المستخدم بالضغط على الصندوق يقوم في الوقت ذاته بتعبئه سجل في الداتابيس وذلك لحجز هذا السجل باسم المستخدم الذي قد حجزه, وتمت البرمجة بالتأكيد على أنه عندما يتراجع بالضغط مرة اخرى على الصندوق وفي الوقت ذاته تحصل عميلة مسح للسجل من الداتابيس والذي كان محجوزا من قبل,كما انه اذا ما نسي المستخدم ازالة العلامة من الصندوق كنت قد ادخلت كود الحذف ذاته عند الخروج بالضغط على X وبذلك لا يعتبر المستخدم حاجزا لأي سجل,, المشكلة التي تواجهني وهي كالتالي:ان خروج المستخدم كان نتيجة انقطاع التيار, مشكلة في الجهاز,... ايا كانت الأسباب والتي استثني حذف السجلات المحجوزة في الداتابيس نتيجتها فلم يزيل العلامة من الصندوق ولم يخرج عن طريق الضغط على X وعند محاولتي اعادة المشكلة ذاتها توصلت لطريقة تضمن عملية الخروج من دون المساس بزر X وهي كالتالي ctrl+alt+delete نذهب الى applications وهي البرنامج المراد اغلاقه, ومن ثم go to process ومن ثم end processالسؤال ما هي الطريقة الفعالة في هذه الحالة. تقديم بلاغ
بتاريخ: 7 مايو 201214 سنة comment_224178 السلام عليكماخى الكريم استخدم الكود الاتى لحجز السجل DECLARE is_locked BOOLEAN := FALSE; dummy VARCHAR2 (2); BEGIN BEGIN SELECT NULL INTO dummy FROM your table WHERE ROWID = :rowid FOR UPDATE NOWAIT; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -00054 THEN is_locked := TRUE; END IF; END; IF is_locked THEN message ('Record is already reserved by another user'); raise form_trigger_failure; END IF; END; تم تعديل 7 مايو 201214 سنة بواسطة msayed.evara تقديم بلاغ
بتاريخ: 7 مايو 201214 سنة كاتب الموضوع comment_224179 السلام عليكماخى الكريم استخدم الكود الاتى لحجز السجل DECLARE is_locked BOOLEAN := FALSE; dummy VARCHAR2 (2); BEGIN BEGIN SELECT NULL INTO dummy FROM your table WHERE ROWID = :rowid FOR UPDATE NOWAIT; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -00054 THEN is_locked := TRUE; END IF; END; IF is_locked THEN message ('Record is already reserved by another user'); raise form_trigger_failure; END IF; END; شكرا لك أخي العزيز,,الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزاليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.مع الشكر الجزيل تقديم بلاغ
بتاريخ: 7 مايو 201214 سنة comment_224180 السلام عليكماخى الكريم استخدم الكود الاتى لحجز السجل DECLARE is_locked BOOLEAN := FALSE; dummy VARCHAR2 (2); BEGIN BEGIN SELECT NULL INTO dummy FROM your table WHERE ROWID = :rowid FOR UPDATE NOWAIT; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -00054 THEN is_locked := TRUE; END IF; END; IF is_locked THEN message ('Record is already reserved by another user'); raise form_trigger_failure; END IF; END; شكرا لك أخي العزيز,,الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزاليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.مع الشكر الجزيل أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوزبمجرد خروجه يستطيع اول مستخدم بعده حجزه تم تعديل 7 مايو 201214 سنة بواسطة msayed.evara تقديم بلاغ
بتاريخ: 7 مايو 201214 سنة كاتب الموضوع comment_224181 السلام عليكماخى الكريم استخدم الكود الاتى لحجز السجل DECLARE is_locked BOOLEAN := FALSE; dummy VARCHAR2 (2); BEGIN BEGIN SELECT NULL INTO dummy FROM your table WHERE ROWID = :rowid FOR UPDATE NOWAIT; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -00054 THEN is_locked := TRUE; END IF; END; IF is_locked THEN message ('Record is already reserved by another user'); raise form_trigger_failure; END IF; END; شكرا لك أخي العزيز,,الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزاليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.مع الشكر الجزيل أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوزبمجرد خروجه يستطيع اول مستخدم بعده حجزه جميل,ولكن كيف بإمكاننا إلغاء حجز السجل,, حيث ان المستخدم خرج من البرنامج ولو بالطريقة الخاطئة التي ذكرتها (حيث بقي حاجزا للسجل) لكنه غير متواجد اصلا في البرنامج.مع خالص شكري تقديم بلاغ
بتاريخ: 7 مايو 201214 سنة comment_224182 السلام عليكماخى الكريم استخدم الكود الاتى لحجز السجل DECLARE is_locked BOOLEAN := FALSE; dummy VARCHAR2 (2); BEGIN BEGIN SELECT NULL INTO dummy FROM your table WHERE ROWID = :rowid FOR UPDATE NOWAIT; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -00054 THEN is_locked := TRUE; END IF; END; IF is_locked THEN message ('Record is already reserved by another user'); raise form_trigger_failure; END IF; END; شكرا لك أخي العزيز,,الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزاليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.مع الشكر الجزيل أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوزبمجرد خروجه يستطيع اول مستخدم بعده حجزه جميل,ولكن كيف بإمكاننا إلغاء حجز السجل,, حيث ان المستخدم خرج من البرنامج ولو بالطريقة الخاطئة التي ذكرتها (حيث بقي حاجزا للسجل) لكنه غير متواجد اصلا في البرنامج.مع خالص شكري لا تحتاج الى اى محاذير لهذا الكود فانه ينتهى بانتهاء خروج المستخدم من الشاشة او السيشن او انقطاع الكهرباء تقديم بلاغ
بتاريخ: 7 مايو 201214 سنة كاتب الموضوع comment_224184 السلام عليكماخى الكريم استخدم الكود الاتى لحجز السجل DECLARE is_locked BOOLEAN := FALSE; dummy VARCHAR2 (2); BEGIN BEGIN SELECT NULL INTO dummy FROM your table WHERE ROWID = :rowid FOR UPDATE NOWAIT; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -00054 THEN is_locked := TRUE; END IF; END; IF is_locked THEN message ('Record is already reserved by another user'); raise form_trigger_failure; END IF; END; شكرا لك أخي العزيز,,الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزاليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.مع الشكر الجزيل أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوزبمجرد خروجه يستطيع اول مستخدم بعده حجزه جميل,ولكن كيف بإمكاننا إلغاء حجز السجل,, حيث ان المستخدم خرج من البرنامج ولو بالطريقة الخاطئة التي ذكرتها (حيث بقي حاجزا للسجل) لكنه غير متواجد اصلا في البرنامج.مع خالص شكري لا تحتاج الى اى محاذير لهذا الكود فانه ينتهى بانتهاء خروج المستخدم من الشاشة او السيشن او انقطاع الكهرباء نص الكود المعمول به حاليا والذي يلبي الغرض لكن فقط عند الخروج بالضغط على X حيث يوجد امر الحذف ذاته هنالك,,او بمسح الصندوق:If :lb_copies.ready_copy=1 then p_lock_copies_lable; <-------- procedure insert locker user.... into table LB_ACQ_COPY_TEMP_LABLE_LOCK:lb_copies.req_by := :global.user_id;commit;else delete from LB_ACQ_COPY_TEMP_LABLE_LOCK where lock_user = :global.user_id and copy_id = :lb_copies.id; Delete Label_Lines Where Create_by = :Global.User_Id; COMMIT;End if;شكرا للمتابعة تقديم بلاغ
بتاريخ: 8 مايو 201214 سنة كاتب الموضوع comment_224203 السلام عليكماخى الكريم استخدم الكود الاتى لحجز السجل DECLARE is_locked BOOLEAN := FALSE; dummy VARCHAR2 (2); BEGIN BEGIN SELECT NULL INTO dummy FROM your table WHERE ROWID = :rowid FOR UPDATE NOWAIT; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -00054 THEN is_locked := TRUE; END IF; END; IF is_locked THEN message ('Record is already reserved by another user'); raise form_trigger_failure; END IF; END; شكرا لك أخي العزيز,,الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزاليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.مع الشكر الجزيل أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوزبمجرد خروجه يستطيع اول مستخدم بعده حجزه جميل,ولكن كيف بإمكاننا إلغاء حجز السجل,, حيث ان المستخدم خرج من البرنامج ولو بالطريقة الخاطئة التي ذكرتها (حيث بقي حاجزا للسجل) لكنه غير متواجد اصلا في البرنامج.مع خالص شكري لا تحتاج الى اى محاذير لهذا الكود فانه ينتهى بانتهاء خروج المستخدم من الشاشة او السيشن او انقطاع الكهرباء نص الكود المعمول به حاليا والذي يلبي الغرض لكن فقط عند الخروج بالضغط على X حيث يوجد امر الحذف ذاته هنالك,,او بمسح الصندوق:If :lb_copies.ready_copy=1thenp_lock_copies_lable; <-------- procedure insert locker user.... into table LB_ACQ_COPY_TEMP_LABLE_LOCK:lb_copies.req_by := :global.user_id;commit;elsedelete from LB_ACQ_COPY_TEMP_LABLE_LOCK where lock_user = :global.user_idand copy_id = :lb_copies.id;Delete Label_Lines Where Create_by = :Global.User_Id; COMMIT;End if;شكرا للمتابعة يرجى الرد لمن لديه فكرة, او حل مامع الشكر الجزيل تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.