الانتقال إلى المحتوى
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.

كيف يمكن عمل Catch For Unique Constraint Error On Form

Featured Replies

بتاريخ:

السلام عليكم

 

عندي فورم ويوجد بها داتا بلوك وعليها مجموعة من ال Columns , يوجد كولوم انا عامل عليه في الداتا بايز unique constraint , اذا ادخل اليوزر قيمة مكررة تظهر رسالة الايرور الخاصة بالداتا بايز عند الحفظ

 

كيف يمكن تغيير هذة الرسالة الى رسالة مفهومة لليوزر

بتاريخ:

خذ رقم الـ Error  الذي يظهر لدى حضرتك 

ثم على مستوى الفورم على الحدث on_error أكتب الكود التالي 

if error_code in(40508) then 
message ('تكرار بالقيد المدخل....');
message ('تكرار بالقيد المدخل....');
end if;

يعني هذا على سبيل المثال أنا وضعت الرقم 40508 

لكن حضرتك تضع رقم الخطأ الذي يظهر لديك

إن كان هذا في Oracle Form 

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

جزاكي الله خيرا

 

بس هل اقدر اجيب القيمة المتكررة عشان اعرضها لليوزر في الرسالة

بتاريخ:

السلام عليكم اخي الكريم
بامكانك بالطبع عرض قيمة الريكورد الحالي كهذا المثال

if dbms_error_code = '-00001' then
  message('This Value Already Exist. '||:emp.empno);    
else
    message(error_type||'-'||error_code||' '||error_text);    
end if;
	

تم تعديل بواسطة mohamedali013

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

جزاك الله خيرا اخي الكريم

 

ولكن في الداتا بلوك يوجد 3 كولوم عليهم unique constraint , كيف احدد الكولوم الذي حدت فية التكرار لقرائة القيمة التي به وعرضها لليوزر

بتاريخ:

ممك حضرتك بدل ما المستخدم  يملى كل البيانات وتستنا يحفظ يجبله الخطاء ويرجع يغير كل البيانات الى ادخلها

ممكن تعمل
حدث when_validate_item على كل ايتم لية الخاصية unique واكتب فية

declare
v varchar2(2);--0
begin
select distinct ('a') into v from table_name where column_name = :item_name ; --0
if v is not null then
message('هذا القيد تم ادخالة مسبقا ...');--0
message(' ');--0
raise form_trigger_failure;--0
end if;--0
exception
when no_data_found then
null;--0
end;--0

وبكدا قبل ما يجي يحفظ هيكون متاكد ان البيانات غير مكررة وكمان وقت الادخال هيكون

عارف اية العمود المكرر ويغير بياناته على طول

تم تعديل بواسطة ميسم الكرام

  • بعد 1 سنة...
بتاريخ:

مش نافع الحل ده يا ج

 

ممك حضرتك بدل ما المستخدم  يملى كل البيانات وتستنا يحفظ يجبله الخطاء ويرجع يغير كل البيانات الى ادخلها

ممكن تعمل
حدث when_validate_item على كل ايتم لية الخاصية unique واكتب فية

declare
v varchar2(2);--0
begin
select distinct ('a') into v from table_name where column_name = :item_name ; --0
if v is not null then
message('هذا القيد تم ادخالة مسبقا ...');--0
message(' ');--0
raise form_trigger_failure;--0
end if;--0
exception
when no_data_found then
null;--0
end;--0

وبكدا قبل ما يجي يحفظ هيكون متاكد ان البيانات غير مكررة وكمان وقت الادخال هيكون

عارف اية العمود المكرر ويغير بياناته على طول

الحل ده مش هينفع بالشكل ده 

ويحتاج ان تقوم الشاشة بحفظ كل سجل بعد ادخاله مباشرة

حد عنده حل أخر

بتاريخ:

مش نافع الحل ده يا ج

 

ممك حضرتك بدل ما المستخدم  يملى كل البيانات وتستنا يحفظ يجبله الخطاء ويرجع يغير كل البيانات الى ادخلها

ممكن تعمل

حدث when_validate_item على كل ايتم لية الخاصية unique واكتب فية

declare
v varchar2(2);--0
begin
select distinct ('a') into v from table_name where column_name = :item_name ; --0
if v is not null then
message('هذا القيد تم ادخالة مسبقا ...');--0
message(' ');--0
raise form_trigger_failure;--0
end if;--0
exception
when no_data_found then
null;--0
end;--0

وبكدا قبل ما يجي يحفظ هيكون متاكد ان البيانات غير مكررة وكمان وقت الادخال هيكون

عارف اية العمود المكرر ويغير بياناته على طول

الحل ده مش هينفع بالشكل ده 

ويحتاج ان تقوم الشاشة بحفظ كل سجل بعد ادخاله مباشرة

حد عنده حل أخر

الناس بتتكلم علي الداتابيز يا بشمهندس , حضرتك عاوز حاجة علي البلوك نفسه .

http://sheikyerbouti.developpez.com/duplicates/duplicates.htm

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

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

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

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

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

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.