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

بتاريخ:

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

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

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

فما هو الخطا في شفرة التريجر
افيدونا جزاكم الله خير الجزاء :D

بتاريخ:

الاخ الكريم
يجب استخدام الفنكشن 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;

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

شكرا اخي على الاهتمام ولكني جربت الشفرة يطلع لي خطأ
هو ان يجب تعريف دالة COMMIT_FORMS;

بتاريخ:

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

commit_form;
لأن
commit_forms خطأ مطبعي

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

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

بتاريخ:

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

بتاريخ:

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

بتاريخ:

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

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

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

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

بتاريخ:

الاخ الكريم
ممكن التحكم بعملية الاضافة محيث يتم التشييك على قاعدة البيانات قبل الاضافة
فقط ضع تريجر 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

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

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

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

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

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

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

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

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

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.