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

بتاريخ:

بسم الله الرحمن الرحيم

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

فقد جربت الطريقتين لكن لم تنفع اريد منكم بارك اله فيكم من يدلني على دالة تحفظ التسلسل التلقائي كما هو حتى لوحذفت محموعة سجلات يبقى التسلسل صحيحا حتى لوتغير ترتيب السجلات
على حقل الإسم مثلا يبقى حقل الترقيم متناسقا بدون لخبطة

علما بأنني بحثت في كافة صفحات المنتدى ولم أجد حلا

ولكم تحياتي

بتاريخ:

بسم الله الرحمن الرحيم

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

انا لدي نفس المشكلة، ولكن وصلت الى حل لعله يرضيك ويرضي الآخرين.

هو عند حذف أحد السجلات تقوم تنفيذ TRigger صممت لعمل ترقيم من اول سجل الى آخره

والـ trigger هو:
declare
x number := 0;
z number := 0 ;
cursor c1 is select id, rowid
from process order by id;
a c1%rowtype;
begin
open c1;
x := 1;
loop
fetch c1 into a ;
exit when c1%notfound;
end loop;
update process set id = x
where process.rowid = a.rowid;
x := x + 1;
end loop;
close c1;
end;


الرجاء من لديه اي ملاحظة أو فكرة عن هذا الموضوع ان يطرحها في هذا المنتدى
جزاكم الله خيراً
والسلام عليكم ورحمة الله وبركاته

بتاريخ:

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

cursor c is
select ur_id_detail from ur_detail_table
where id_masetr=:ur_id_master_in_form
group by ur_id_detail;
t number:=0;
begin
for i in c loop
 t:=t+1;
  update ur_deial_table set ur_id_detail=t
   where ur_id_detail=i.ur_id_detail;
    commit;
end loop;
end;


حيث ان ur_id_detail هو رقم التسلسلي القديم الموجود في جدول الديتيل
id_masetr هو رقم الرئيسي الموجود في جدول الديتيل
ur_detail_table هو اسم الجدول الفرعي

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

الأخ الكريم أسامة بسيوني معليش اخي ممكن توضح الشرح في الأخير هل يعني كلامك انشاء أكثر من جدول لعمل التسلسل

خليني اعطيك اسم الجدول الي عندي عشان اشتغل عليه اسم الجدول (frdd ) واسم الحقل الذي يحتوي على التسلسل التلقائي
( msl ) هل كلامك يعني اضافة جدول ثاني أو حقل ثاني وأيضا هل يوضع الكود على مستوى البلوك أم مع زر الحذف أرجو التوضيح
أخي الكريم ولك وللأخ احمد تحياتي

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

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

الجدول الماستر عندي اسمه frdm وحقل الربط فيه مع جدول الديتيل هو id1
الجدول الديتيل اسمه frdd وحقل الربط ايضا هو id2
اما حقل التسلسل في جدول الديتيل فهو msl وهذا وضعت فيه امر سلكت عند الإضافة لعمل التسلسل بالأمر المعروف
select nvl(max(msl).0) +1 into :frdd.msl from frdd where id2=:frdmid1;

علما بان التسلسل شغال صح لكن اريد إذا حذف سجل من الوسط مثلا أو أكثر أو تغير ترتيب السجلات في الجدول يبقى التسلسل
محافظا على انسجامه مثلا من 1 وحتى عشرة بدون نقص ارجو ان يكون فهم الطلوب

بتاريخ:

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

cursor c is
select msl from frdd
where  id2=:frdmid1;
t number:=0;
begin
for i in c loop
t:=t+1;
 update frdd set msl=t
  where id2=:frdmid1;
   commit;
end loop;
end;

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

الأخ أسامة بسوني معليش استحملني شويه

الأمر جيد ولكن أعتقد أنه ينقصه في البداية كلمة declare
وعندما نفذت الأمر تطلع لي رسالة هل ترغب في حفظ التغييرات وعندما أضع نعم يعود مرة اخرى فتخرج نفس الرسالة وعندما اضغط لا
يخرج بدون تغييرات

بتاريخ:

شكر خاص للاخ الفاضل اسامه والى الامام دائما وارجو منك ان ترشدنى لطريقه احفظ بها الافلام فى الجداول واقرأها من الجداول لان ذلك سوف يجعلهااكثر قوة وحمايه
[email protected]

بتاريخ:

اخي الكريم vamd
اظن انك عند الحذف لا تخزن لذلك يجب تخزين الحذف قبل القيام بعملية ال update

declare
cursor c is
select msl from frdd
where  id2=:frdmid1;
t number:=0;
begin
commit_form;
for i in c loop
t:=t+1;
update frdd set msl=t
 where id2=:frdmid1;
  commit_form;
end loop;
end;

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

الأخ أسامة لم ينجح الأمر مرة يعطي نفس الرقم لكل السجلات ومره يكرر التسلسل لأكثر من سجل

يمكن لم تفهم سؤالي جيد

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

بتاريخ:

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

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

اسامة حبيبي لقد ارسلت اليك الرسالة التي طلبت فهل وصلت

بتاريخ:

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

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

أخوي اسامة ماقصرت شغل مئه مئه الله يعطيك العافية بس فيه ملاحظة يمكن ما انتبهت لها

انا حاط ترتيب سجلات الجدول بالحقل إجمالي نقاط ملف الترقية ويرتب من الأكبر إلى الأصغر

يعني لما اضيف سجل جديد ويكون مثلا عاشر سجل وإجمالي نقاطه مثلا 100 بينما السجل الأول إجمالي نقاطه 50 فإن التسلسل التلقائي
يصبح ملخبط ممكن اول سجل يصبح رقمه عشرة انا ابغى اللله يعطيك العافية التسلسل زي ما سويته بس بشرط يكون متسلسل ومحافظ
على ترتيب الجدول حسب ملف النقاط

يمكن إضافة بسيطة منك الله يعطيك الصحة والعافية وتسلم لي يا أسامة

بتاريخ:

مشكورآ اخى اسامه بس انا حولت اطبق الحل بس ادانى هذا الخطأ
frm-40737

[email protected]
ايهاب وجدى

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

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

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

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

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

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

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.