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

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

صورة
- - - - -

عدم عمل بعض الشفرات داخل تراجير


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

#1 ym_yemen

ym_yemen

    مشترك

  • الأعضــاء
  • 91 مشاركة

تاريخ المشاركة 24 December 2005 - 10:05 AM

الأخوة / الأعزاء أعضاء المنتدى
السلام عليكم ورحمة الله وبركاته
لدي مشكلة صغيرة وهي ان بعض شفرات pl/sql لا تعمل بشكل صحيح ولا ادري ما السبب فمثلا
عند كتابة شفرة حذف سجل من داخل قاعدة بيانات داخل ترايجل فإن هذه الشفرة لا تعمل بينما اذا كتبتها في sql فإنها تعمل بشكل طبيعي
فمثلا الشفرة التالية لا تعمل داخل التريجر:
declare
begin
delete from yyy where y_no = :y_no ;
end;

بينما لو كتبت داخل الـ SQL الشفرة التالية للتحذف فإنها تعمل على الجدول مباشرة

delete form yyy where y_no = 1
فان السجل الذي رقم فيه 1 يتم حذفه مباشرة

فما هو الخطا في شفرة التريجر
افيدونا جزاكم الله خير الجزاء :D
[SIZE=14][COLOR=blue]كن في الدنيا عالماً او متعلما

#2 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 24 December 2005 - 10:32 AM

الاخ الكريم
يجب استخدام الفنكشن FORMS_DDL عندما تريد عمل حذف او اضافة يوزر او منح صلاحيات فهي تعمل بشكل افضل مع استغرابس لأنها يجب ان تعمل ويمكن انك ناسي ال COMMIT_FORM;

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

طريقة 1
declare 
begin 
delete from yyy where y_no = TO_NUMBER(:y_no);
COMMIT_FORMS;
end;

طريقة 2
begin 
FORMS_DDL('delete from yyy where y_no ='|| TO_NUMBER(:y_no) );
COMMIT_FORMS;
END;

۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#3 ym_yemen

ym_yemen

    مشترك

  • الأعضــاء
  • 91 مشاركة

تاريخ المشاركة 24 December 2005 - 12:15 PM

شكرا اخي على الاهتمام ولكني جربت الشفرة يطلع لي خطأ
هو ان يجب تعريف دالة COMMIT_FORMS;
[SIZE=14][COLOR=blue]كن في الدنيا عالماً او متعلما

#4 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 24 December 2005 - 05:33 PM

اخي الكريم
جرب

commit_form;
لأن
commit_forms خطأ مطبعي
۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#5 ym_yemen

ym_yemen

    مشترك

  • الأعضــاء
  • 91 مشاركة

تاريخ المشاركة 25 December 2005 - 12:08 PM

شكرا اخي الكريم عند عمل compile لايوجد هناك اي خطأ
بس في مشكلة اخرى انه عندما انفذ التريجر تظهر رسالة تخبرني "unable to insert record"
فلو توضح لي ما المشلكة ولك جزيل الشكر ولو تعبناك معنا
ملاحظة
عند ما استخدم زر indrty record في الفورم بلدر تظهر لي رسالة تخبرني بان السجل قد تم ادخالة ولكن عندما اعمل استعراض للبيانات المدخلة الاحظ انه لا يوجد اي بيانات
[SIZE=14][COLOR=blue]كن في الدنيا عالماً او متعلما

#6 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 25 December 2005 - 05:08 PM

الاخ الكريم
معنى هذه الرسالة هو وجود عنصر او حقول من الحقول اما ان يكون اسم الحقل في database الموجودة في الخصائص لايطابق الموجود بقاعدة البيانات او وجود حقل لا ينتمي لقاعدة البيانات
لذلك اثناء ظهور الخطا اضغط shift + F1
او من help الموجود بالشاشة dsiplay error ليظهر لك سبب الخطأ
۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#7 m_almarei

m_almarei

    عضو نشط

  • الأعضــاء
  • 461 مشاركة

تاريخ المشاركة 25 December 2005 - 08:02 PM

اتوقع ان يكون احد سببين:
الاول:
كما قال الخ admin05 من وجود حقل ليس داتا بيز ولكن خاصيته لم تعدل لذلك تاكد من الحقول ان خاصية الغير تابعة لجدول من ان خاصية database item = no
الثاني:
أتوقع انه يرفض اجراء عملية الحذف لذلك عند تنفيذ الدالة commit_form يقوم بمحاولة ادخال قيمة جديدة وهي نفس القيمة المحاولة حذفها بالتالي يعمل البرايمري كي فيوليتد ولا يتمكن من تنفيذها
قال تعالى: (وفوق كل ذي علم عليم)

قال تعالى: (وقل رب زدني علما)

--------------------------------------------------------------------------------------------
m_almarei@hotmail.com

#8 m_almarei

m_almarei

    عضو نشط

  • الأعضــاء
  • 461 مشاركة

تاريخ المشاركة 25 December 2005 - 08:05 PM

اتوقع ان يكون احد سببين:
الاول:
كما قال الأخ admin05 من وجود حقل ليس داتا بيز ولكن خاصيته لم تعدل لذلك تاكد من الحقول الغير تابعة لجدول من ان خاصية
database item = no
الثاني:
أتوقع انه يرفض اجراء عملية الحذف لذلك عند تنفيذ الدالة commit_form يقوم بمحاولة ادخال قيمة جديدة وهي نفس القيمة المحاول حذفها بالتالي يعمل البرايمري كي فيوليتد ولا يتمكن من تنفيذها
قال تعالى: (وفوق كل ذي علم عليم)

قال تعالى: (وقل رب زدني علما)

--------------------------------------------------------------------------------------------
m_almarei@hotmail.com

#9 ym_yemen

ym_yemen

    مشترك

  • الأعضــاء
  • 91 مشاركة

تاريخ المشاركة 26 December 2005 - 11:53 AM

شكرا جزيلا اخواني على هذا التفاعل جزاكم الله خير وزادكم بسطة في العلم
ولكن يا اخواني الملاحظ أنه حين ازيل خاصية الـpremary key عن حقل st_no فان شفرة الحفظ
insert to تعمل بشكل طبيعي ( حيث يتم تكرار الحقل مرتين داخل الجدول ) وعندما اعيد خاصية الـ premary key فان شفرة الادراج لا تعمل فما السبب افيدونا جزاكم الله خير

تم التعديل بواسطة ym_yemen, 27 December 2005 - 11:39 AM.

[SIZE=14][COLOR=blue]كن في الدنيا عالماً او متعلما

#10 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 29 December 2005 - 01:24 PM

الاخ الكريم
ممكن التحكم بعملية الاضافة محيث يتم التشييك على قاعدة البيانات قبل الاضافة
فقط ضع تريجر post-change على st_no
ليعلمك برسالة ان هذا الرقم موجود ولا تستطيع الاضافة

declare 

temp varchar2(20):=null;
begin
select 'X' into temp from your_table
where your_faild=:st_no;
exceptions
when no data found then 
 temp:=null;

if temp ='X' then 
 message ('This is St_no was found in your database !!');
go_item('st_no);
:st_no:=null;
end if;
end;

تم التعديل بواسطة Admin05, 29 December 2005 - 01:25 PM.

۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#11 ym_yemen

ym_yemen

    مشترك

  • الأعضــاء
  • 91 مشاركة

تاريخ المشاركة 03 January 2006 - 10:50 AM

شكرا سوف احاول شكرا على هذا الابداع يا اخ admin 5

تم التعديل بواسطة ym_yemen, 03 January 2006 - 10:54 AM.

[SIZE=14][COLOR=blue]كن في الدنيا عالماً او متعلما