الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كيف يمكن التعامل مع البيانات فى حالة الخروج المفاجئ من البرنامج

Featured Replies

بتاريخ:

مرحبا جميعا,

اود ان اطرح مشكلة وهي المشاركة الأولى لي معكم في هذا المنتدى القدير,
مشكلتي:
عندي فورم يوجد به check box وتمت البرمجة على اساس انه عندما يقوم المستخدم بالضغط على الصندوق يقوم في الوقت ذاته بتعبئه سجل في الداتابيس وذلك لحجز هذا السجل باسم المستخدم الذي قد حجزه, وتمت البرمجة بالتأكيد على أنه عندما يتراجع بالضغط مرة اخرى على الصندوق وفي الوقت ذاته تحصل عميلة مسح للسجل من الداتابيس والذي كان محجوزا من قبل,

كما انه اذا ما نسي المستخدم ازالة العلامة من الصندوق كنت قد ادخلت كود الحذف ذاته عند الخروج بالضغط على X وبذلك لا يعتبر المستخدم حاجزا لأي سجل,, المشكلة التي تواجهني وهي كالتالي:
ان خروج المستخدم كان نتيجة انقطاع التيار, مشكلة في الجهاز,... ايا كانت الأسباب والتي استثني حذف السجلات المحجوزة في الداتابيس نتيجتها فلم يزيل العلامة من الصندوق ولم يخرج عن طريق الضغط على X وعند محاولتي اعادة المشكلة ذاتها توصلت لطريقة تضمن عملية الخروج من دون المساس بزر X وهي كالتالي ctrl+alt+delete نذهب الى applications وهي البرنامج المراد اغلاقه, ومن ثم go to process ومن ثم end process

السؤال ما هي الطريقة الفعالة في هذه الحالة.

بتاريخ:

السلام عليكم

اخى الكريم استخدم الكود الاتى لحجز السجل

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;

تم تعديل بواسطة msayed.evara

بتاريخ:
  • كاتب الموضوع

السلام عليكم

اخى الكريم استخدم الكود الاتى لحجز السجل

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;









شكرا لك أخي العزيز,,
الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزا
ليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.

مع الشكر الجزيل
بتاريخ:


السلام عليكم

اخى الكريم استخدم الكود الاتى لحجز السجل

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;







شكرا لك أخي العزيز,,
الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزا
ليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.

مع الشكر الجزيل




أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوز
بمجرد خروجه يستطيع اول مستخدم بعده حجزه

تم تعديل بواسطة msayed.evara

بتاريخ:
  • كاتب الموضوع



السلام عليكم

اخى الكريم استخدم الكود الاتى لحجز السجل

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;







شكرا لك أخي العزيز,,
الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزا
ليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.

مع الشكر الجزيل




أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوز
بمجرد خروجه يستطيع اول مستخدم بعده حجزه




جميل,
ولكن كيف بإمكاننا إلغاء حجز السجل,, حيث ان المستخدم خرج من البرنامج ولو بالطريقة الخاطئة التي ذكرتها (حيث بقي حاجزا للسجل) لكنه غير متواجد اصلا في البرنامج.

مع خالص شكري
بتاريخ:




السلام عليكم

اخى الكريم استخدم الكود الاتى لحجز السجل

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;







شكرا لك أخي العزيز,,
الهدف من الفكرة ليس الحجز وإنما ازالة الحجز حيث أن المستخدم لم يضغط زر الخروج الموجود في الشاشة ولم يزيل العلامة من الصندوق وبذلك بقي السجل محجوزا
ليس الفكرة ان نفيد المستخدم الآخر بأن السجل محجوز او غير.

مع الشكر الجزيل




أخى الكريم هذا الكود لحجز السجل لاول مستخدم وحتى ان يخرج من شاشته باى طريقة سيبقى محجوزا له ويظهر للاخرين بانه محجوز
بمجرد خروجه يستطيع اول مستخدم بعده حجزه




جميل,
ولكن كيف بإمكاننا إلغاء حجز السجل,, حيث ان المستخدم خرج من البرنامج ولو بالطريقة الخاطئة التي ذكرتها (حيث بقي حاجزا للسجل) لكنه غير متواجد اصلا في البرنامج.

مع خالص شكري


لا تحتاج الى اى محاذير لهذا الكود فانه ينتهى بانتهاء خروج المستخدم من الشاشة او السيشن او انقطاع الكهرباء
بتاريخ:
  • كاتب الموضوع





السلام عليكم

اخى الكريم استخدم الكود الاتى لحجز السجل

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;


شكرا للمتابعة
بتاريخ:
  • كاتب الموضوع






السلام عليكم

اخى الكريم استخدم الكود الاتى لحجز السجل

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;


شكرا للمتابعة


يرجى الرد لمن لديه فكرة, او حل ما
مع الشكر الجزيل

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.