إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

محتاج كود يمنع المستخدم من أدخال رقم موجود في الداتابيز

on-error trigger

أفضل إجابة ميسم الكرام , 28 September 2013 - 05:34 AM

السلام عليكم ورحمة الله وبركاته ..عندي نفس المشكلة وتم حلها بالكود التالي: تكتب الكود على زر الحفظ ..حتى يتم التحقق قبل الحفظ

declare
	aa number;
begin
	select count(ser) into aa from tablename
	where ser = :blk.ser;
	if aa > 0 then
	message('الرقم مدخل سابقاً');
message('الرقم مدخل سابقاً');
	else
commit_form;
	end if;
	end;

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

بالتوفيق ..إن شاء الله 

قراءة المشاركة كاملة


8 رد (ردود) على هذا الموضوع

#1 هشام ابو العنين

هشام ابو العنين

    مشترك

  • الأعضــاء
  • 147 مشاركة
  • الاسم الأول:هشام
  • اسم العائلة:ابو العنين
  • البـلـد: Country Flag
  • الاهتمامات:Oracle Apex , Java , C# , HTML , CSS, Oracle DBA

تاريخ المشاركة 28 September 2013 - 12:51 AM

السلام عليكم ورحمة الله وبركاته

أنا عامل فورمة وعليها حقل فيه السيريال ومش عاوز المستخدم يدخل السيريال مرتين

يعني عاوز كود لما يكتب رقم 15 مثلا والرقم ده اتعمل قبل كدة ،، أظهرله رسالة تم استخدام الرقم من قبل 
الفورمة بتعمل حفظ عندي زي الفل لكن لأني عامل السيريال pk فلما المستخدم يدخل رقم موجود قبل كدة فعمنا الاوراكل فورمز يقول unable to insert this record

فأنا محتاج أهندل الايرور ده او أمنع المستخدم من أدخال ارقام موجودة في الداتا بيز ،،،،

أرجو اني اكون وصفت المشكلة بشكل سهل ومفهوم 

منتظر ابداعتكم



#2 mido bob

mido bob

    عضو

  • الأعضــاء
  • 11 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 28 September 2013 - 01:39 AM

اعمل alert وفى on-error trigger عالج الخطا دا 

declare 
x_error number(2);
begin 
if error_code =00000 then
x_error=show_alert('alert_name');
end;

تم التعديل بواسطة Ahmad.Hasan, 28 September 2013 - 02:39 AM.


#3 هشام ابو العنين

هشام ابو العنين

    مشترك

  • الأعضــاء
  • 147 مشاركة
  • الاسم الأول:هشام
  • اسم العائلة:ابو العنين
  • البـلـد: Country Flag
  • الاهتمامات:Oracle Apex , Java , C# , HTML , CSS, Oracle DBA

تاريخ المشاركة 28 September 2013 - 01:52 AM

الكود به شئ خاطئ 

x_error=show_alert('alert_name);



#4 هشام ابو العنين

هشام ابو العنين

    مشترك

  • الأعضــاء
  • 147 مشاركة
  • الاسم الأول:هشام
  • اسم العائلة:ابو العنين
  • البـلـد: Country Flag
  • الاهتمامات:Oracle Apex , Java , C# , HTML , CSS, Oracle DBA

تاريخ المشاركة 28 September 2013 - 02:04 AM

وللعلم فقط قمت بعمل الكود الآتي
on forms on_error

BEGIN
IF ERROR_TYPE = 'FRM' AND ERROR_CODE = 40508 

THEN
MESSAGE('THIS SERIAL NUMBER IS EXIST'); END IF;
END;

وتظهر مع الرسالة اول مرة اقوم فيها بادخال رقم 15 مثلا ولكن عند ادخاله مرة أخرى لا تظهر لي الرسالة بل أجده يقول لي ان هذا الريكورد تم حفظه



#5 ميسم الكرام

ميسم الكرام

    مشرفة

  • فريق الإشراف
  • 2,162 مشاركة
  • الاسم الأول:-
  • اسم العائلة:-
  • البـلـد: Country Flag

تاريخ المشاركة 28 September 2013 - 05:34 AM   أفضل إجابة

السلام عليكم ورحمة الله وبركاته ..عندي نفس المشكلة وتم حلها بالكود التالي: تكتب الكود على زر الحفظ ..حتى يتم التحقق قبل الحفظ

declare
	aa number;
begin
	select count(ser) into aa from tablename
	where ser = :blk.ser;
	if aa > 0 then
	message('الرقم مدخل سابقاً');
message('الرقم مدخل سابقاً');
	else
commit_form;
	end if;
	end;

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

بالتوفيق ..إن شاء الله 


تم التعديل بواسطة ميسم الكرام, 28 September 2013 - 05:50 AM.

  • هشام ابو العنين معجب بهذا

#6 هشام ابو العنين

هشام ابو العنين

    مشترك

  • الأعضــاء
  • 147 مشاركة
  • الاسم الأول:هشام
  • اسم العائلة:ابو العنين
  • البـلـد: Country Flag
  • الاهتمامات:Oracle Apex , Java , C# , HTML , CSS, Oracle DBA

تاريخ المشاركة 28 September 2013 - 05:59 AM

جاري التنفيذ وسأخبركم بالنتيجة !!



#7 هشام ابو العنين

هشام ابو العنين

    مشترك

  • الأعضــاء
  • 147 مشاركة
  • الاسم الأول:هشام
  • اسم العائلة:ابو العنين
  • البـلـد: Country Flag
  • الاهتمامات:Oracle Apex , Java , C# , HTML , CSS, Oracle DBA

تاريخ المشاركة 28 September 2013 - 06:16 AM

  :D أخي أو أختي ميسم  الكرام!!(عذرا لجهلي بصاحب الاسم B) )

هل تعلم اني منذ السادسة من مساء أمس وأنا أحاول عمل هذا الكود ولم أنجح   :blink:  :blink:  :blink: ؟؟!!
الكود الذي اعطيتني ايه فعال ويعمل بكفاءة وتم تجربته :lol:
أشكرك جدا وجزاك الله خيرا ،، وهذه هي زكاة العلم ،، علمكم الله ونفعكم بما علمكم
بارك الله فيك


  • ميسم الكرام معجب بهذا

#8 ميسم الكرام

ميسم الكرام

    مشرفة

  • فريق الإشراف
  • 2,162 مشاركة
  • الاسم الأول:-
  • اسم العائلة:-
  • البـلـد: Country Flag

تاريخ المشاركة 28 September 2013 - 06:24 AM

شكراً لحضرتك...ولزيادة الترتيب في الفورم...إذا كان الحقل الذي تضع فيه الرقم يعني ser تلقائياً...فيفضل ضبط خصائصه 

في خاصية enable  تجدها yes اجعلها no هذا في حالة واحدة فقط ....إذا كانت السلسلة تتولد تلقائياً وليس المستخدم يقوم بإدخالها يدوياً

بالتوفيق ...إن شاء الله


  • هشام ابو العنين معجب بهذا

#9 هشام ابو العنين

هشام ابو العنين

    مشترك

  • الأعضــاء
  • 147 مشاركة
  • الاسم الأول:هشام
  • اسم العائلة:ابو العنين
  • البـلـد: Country Flag
  • الاهتمامات:Oracle Apex , Java , C# , HTML , CSS, Oracle DBA

تاريخ المشاركة 28 September 2013 - 06:33 AM

شكرا لكِ  أختي،، 
الحقل ليس تلقائي بل هو الرقم المسلسل للأجهزة ويقوم المستخدم بأدخاله يدويا
شكرا على المعلومة واكيد حنحتاج خبراتك في الفترة القادمة
جزاكي الله خيرا


  • ميسم الكرام معجب بهذا