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

بتاريخ:

السلام عليكم مشرفين واعضا منتدنا المبدع 

 

لدي استفسار وهي كالتالي 

 

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

 

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

 

فما هو الحل اصدقائى الاعزا جزاكم الله خير 

 

بتاريخ:

طيب ايه البروسيجر اللى كتبته

بتاريخ:

السلام عليكم

بما انه افورم ماستر - ديتيل اكيد يوجد بينهم relation.

لماذا تعمل بروسيجر للحذف؟

غير فقط نوع الـ relation لكي يتم حذف الديتيل عند حذف الماستر.

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

السلام عليكم

بما انه افورم ماستر - ديتيل اكيد يوجد بينهم relation.

لماذا تعمل بروسيجر للحذف؟

غير فقط نوع الـ relation لكي يتم حذف الديتيل عند حذف الماستر.

 

وعليكم السلام اخي الفاضل احمد حسن 

 

لدي ملاحظتين وهيا كالتالي :

 

1- لقد قمنت بعمل بروسيجر بعملية INSERT  الي جدول اخرى   وعند اضافه عملية تتم اضافه البيانات الي تلك الجدول  

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

 

2- ارجو توضيح الطريقة التي ذكرتها بتغير نوع الـ relation لكي يتم حذف الديتيل عند حذف الماستر.

 

جزاك الله خير جزاء اخي الفاضل احمد حسن 

بتاريخ:

بتخلى العلاقة cascading بين الجدوليين

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

بتخلى العلاقة cascading بين الجدوليين

 

السلام عيكم اخي الفاضل احمد عمر 

 

انا مسوي cascading في العلاقة بين البلوكين 

 

ولكن كما وضحت  لقد قمنت بعمل بروسيجر بعملية INSERT  الي جدول اخرى   وعند اضافه عملية تتم اضافه البيانات الي تلك الجدول  اي انا هناك تاثيرات على جدول اخرى اريد عند

الحذف يتم حذف كل التاثيرات التي تمت اثنا العملية  

 

ولك خالص الشكر والتقدير اخي الفاضل احمد عمر

تم تعديل بواسطة anas.soft

بتاريخ:

شوف الشرط اللى حاططها على عملية الحذف

بتاريخ:

الحذف فى الديتيل حسيكون على  الركورد اللى المؤشر عليه فقط وده الصح  افضل من انه يحذف كل البيانات بالخطا

ويفضل عدم استخدام cascade delete

لو يريد حذف سجل رئيسى له فروع اذا يحذف الفروع اولا ثم يقوم بحذفه منعا لاخطاء المستخدميين

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

السلام عليكم 

 

اخواني الاعزا  كي اوضح لكم ما اريده بالضبط هو كالتالي 

 

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

 

اريد عند الحذف ان يحذف كل سجلات الديتل المرتبطة بالمستر 

 

ارجو المساعده وجزاكم الله خير الجزا  

تم تعديل بواسطة anas.soft

بتاريخ:

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

من الافضل ان توضح لنا نبذة بسيطة عن هيكل الجداول والكود الذي قمت بكتابته

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

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

السلام عليكم اخي انس

من الواضح من كلامك انك لا تريد فقط الحذف من الماستر والديتيل اللى على الشاشة

بل تريد حذف داتا اخري فى جداول اخرى متعلقة بالشاشة الحالية

 

من الافضل ان توضح لنا نبذة بسيطة عن هيكل الجداول والكود الذي قمت بكتابته

 

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

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

 

 

وعليكم السلام اخي الكريم محمد 

 

ساوضح لك بنبذه بسيطة اخي العزيز م. محمد 

 

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

 

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

 

هذ ولك خالص الشكر والتقدير وجزاك الله خير 

تم تعديل بواسطة anas.soft

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

يرجى ارفاق الكود الموجود في البروسيجر ؟

 السلام عليكم استاذي القدير احمد حسن 

 

هذا هو الكود 

PROCEDURE DELETE_CFL_TRANSACTIONS_WORKS IS
BEGIN
  
 BEGIN
 	 DELETE FROM  CFL_TRANSACTIONS_WORKS
  	WHERE
      				 ACCOUNT_TYPE=:B1.PAYMENT_LOC AND
               COMP#=:B1.LOC_COMP# AND 
		           REGION_CODE=:B1.LOC_REGION_CODE AND
	           	 BRANCH# =:B1.LOC_BRANCH# AND
		           ACCOUNT_NO=:B1.LOC_ACCT_NO AND
		           TRANS_TYPE=DECODE(:B1.PAYMENT_TYPE , '01','51','02','52','53') AND
		           TRANS_NO=:B1.PAYMENT_TYPE||:B1.COMP#||:B1.REGION_CODE||:B1.BRANCH#||:B1.DEPT#||:B1.MAIN_PERIOD_NO||:B1.PAYMENT_NO ||:B4.BUSINESS_SER_NO ; 
 	EXCEPTION	WHEN OTHERS THEN 
			ALERT_MSG('MSG','Unable To Delete From CFL_transActions....!'||SQLERRM) ; 
			Raise Form_trigger_Failure  ; 
 	END  ; 
 	
 IF :B1.BENEFICIARY_TYPE IN ('01' ,'02') THEN 
	
 BEGIN
 	  DELETE FROM CFL_TRANSACTIONS_WORKS WHERE 
 	        ACCOUNT_TYPE=DECODE(:B1.BENEFICIARY_TYPE,'01','1','02','2') AND
	        COMP#=SUBSTR(:B1.BENEFICIARY_NO,1,2) AND 
	        REGION_CODE=SUBSTR(:B1.BENEFICIARY_NO,3,2) AND
	        BRANCH#=SUBSTR(:B1.BENEFICIARY_NO,5,2) AND
	        ACCOUNT_NO=SUBSTR(:B1.BENEFICIARY_NO,7,4) AND
	        TRANS_TYPE=DECODE( :B1.PAYMENT_TYPE , '01','24','02','25','26')  AND
	        TRANS_NO=:B1.PAYMENT_TYPE||:B1.COMP#||:B1.REGION_CODE||:B1.BRANCH#||:B1.DEPT#||:B1.MAIN_PERIOD_NO||:B1.PAYMENT_NO ||:B4.BUSINESS_SER_NO  ; 
 	   EXCEPTION	WHEN OTHERS THEN 	ALERT_MSG('MSG','Unable To Delete From CFL_transActions....!') ; 
											Raise Form_trigger_Failure  ; 
 	   END ; 
 END IF  ; 
END  ;  

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

بتاريخ:

السلام عليكم

لو نفذت الجملة التالية:

 

SELECT *
  FROM cfl_transactions_works
 WHERE account_type = :b1.payment_loc
   AND comp# = :b1.loc_comp#
   AND region_code = :b1.loc_region_code
   AND branch# = :b1.loc_branch#
   AND account_no = :b1.loc_acct_no
   AND trans_type = DECODE (:b1.payment_type, '01', '51', '02', '52', '53')
   AND trans_no =
             :b1.payment_type
          || :b1.comp#
          || :b1.region_code
          || :b1.branch#
          || :b1.dept#
          || :b1.main_period_no
          || :b1.payment_no
          || :b4.business_ser_no;

 كم ريكورد بترجع ؟

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

 

السلام عليكم

لو نفذت الجملة التالية:

 

SELECT *
  FROM cfl_transactions_works
 WHERE account_type = :b1.payment_loc
   AND comp# = :b1.loc_comp#
   AND region_code = :b1.loc_region_code
   AND branch# = :b1.loc_branch#
   AND account_no = :b1.loc_acct_no
   AND trans_type = DECODE (:b1.payment_type, '01', '51', '02', '52', '53')
   AND trans_no =
             :b1.payment_type
          || :b1.comp#
          || :b1.region_code
          || :b1.branch#
          || :b1.dept#
          || :b1.main_period_no
          || :b1.payment_no
          || :b4.business_ser_no;

 كم ريكورد بترجع ؟

 

السلام عليكم استاذي القدير احمد  

  

يعيد لي ريكورد واحد  فقط  وانا اعتقد ان المشكلة انه عمود  trans_no عند اضافة اكثر من ريكورد في الديتل يقوم باضافة رقم جديد وعملية الحذف تتم على الريكورد الذي يكون علية الموشر فقط انا اريد ان احذف جميع الريكوردات التي تظهر في بلوك الديتل 

 

اشكر حسن تعوننكم وارجو ان تحل هذه المشكلة 

بتاريخ:

السلام عليكم

بما انها بترجع ريكورد واحد يعني لازم تعدل في جملة الـ Delete بحيث يتم حذف جميع الصفوف في الديتيل اعتمادا على العلاقة مع الماستر.

سأعطيك مثال:

لو كان بلوك الماستر يحتوي على بيانات القسم.

والديتيل يحتوي على الموظفين التابعين لهذا القسم.

سيكون بين البلوكين علاقة وهي رقم القسم.

في هذه الحالة جملة الـ Delete ستقوم بحذف جميع الموظفين التابعين لهذا القسم بدون وجود أي شروط في الـ Where تتعلق ببلوك الموظفين.

 

بالتوفيق.

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

السلام عليكم

بما انها بترجع ريكورد واحد يعني لازم تعدل في جملة الـ Delete بحيث يتم حذف جميع الصفوف في الديتيل اعتمادا على العلاقة مع الماستر.

سأعطيك مثال:

لو كان بلوك الماستر يحتوي على بيانات القسم.

والديتيل يحتوي على الموظفين التابعين لهذا القسم.

سيكون بين البلوكين علاقة وهي رقم القسم.

في هذه الحالة جملة الـ Delete ستقوم بحذف جميع الموظفين التابعين لهذا القسم بدون وجود أي شروط في الـ Where تتعلق ببلوك الموظفين.

 

بالتوفيق.

وعليكم السلام استاذ احمد 

 

 مثلا اذا قمت بعمل العلاقة بنا على رقم سند الصرف النقدي  فقد يتركر هذا الرقم في حاله الادخال من سند صرف شيك  او سند صرف حوالة   وفي حاله عملت جملة DELETE  بنا على رقم السند الصرف وكان هناك رقم متكرر من سند صرف شيك سيقوم بحذف العملياتين معا  لان هذا الجدول يمرر اليه البيانات من خلال اربع نوافذ  

 

ولك خالص الشكرو التقدير 

بتاريخ:

اوكي اضف نوع السند في جملة الـ Where.

او الافضل رفع بيانات توضيحية للداتا الموجودة في الجدول وحدد البيانات المراد حذفها ؟

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

اوكي اضف نوع السند في جملة الـ Where.

او الافضل رفع بيانات توضيحية للداتا الموجودة في الجدول وحدد البيانات المراد حذفها ؟

الاستاذ العزيز احمد حسن 

 

تم حل المشكلة جزاك الله خير الجزاء 

 

ولا انساء ان اشكر جميع من ساعدني في هذا الموضوع 

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

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

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

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

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

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.