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

بتاريخ:

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

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

PROCEDURE Get_Seq_no(Seq_no in out number) IS
Declare

cursor c is
select count(id_number) CC from ur_table;
 n number;
nn number;
n_count number:=0;
begin
open c;
   fetch c into n;
close c;
for i in  1 .. n loop
 n_count:=i;
	select id_number into nn from ur_table 
	 where id_number=i;
  if  nn is null then
	exit loop;
  end if;
end loop;
--هذا الشرط اذا كانت التسلسل متطابق وغير ناقص فإنه يضيف واحد لآخر رقم
if n_count=n and nn is not null then 
 seq_no:=nvl(n,0)+1;
else
 seq_no:=n_count;
end if; 
end;



هذا الكود حتى لو حذفت الرقم المتسلسل يقوم باعطائك الرقم المسلسل المحذوف

ثم قم باضافة تريجر على مستوى البلوك اسمه pre-insert
واستدعي البروسيجر
بالشكل التالي
get_seq_no(:id_number);

حيث ان :id_number هو عبارة رقم المسلسل بالشاشة



اما اذا كان لايهمك رقم المسلسل فيمكن تطبيق هذا البروسيجر

PROCEDURE Get_Seq_no(Seq_no in out number) IS
Declare

cursor c is
select count(id_number) CC from ur_table;
 n number;
begin
open c;
   fetch c into n;
close c;
for i in  1 .. n loop
	update ur_table set id_number =i
	   where id_number>=i;
  commit;
end loop;
 seq_no:=nvl(n,0)+1;
end if; 
end;



ثم قم باضافة تريجر على مستوى البلوك اسمه pre-insert
واستدعي البروسيجر
بالشكل التالي
get_seq_no(:id_number);

حيث ان :id_number هو عبارة رقم المسلسل بالشاشة

شرح طريقة عمل الطريقتين

بالنسبة للطريقة الاولى فهو يقوم بالبحث عن الرقم المفروض
حيث لو فرضنا وجود 5 سجلات
ورقمها المسلسل بالشكل التالي 1 2 4 5 6
هنا سوف يرجع لك ان رقم 3 هو رقم المسلسل

بالنسبة للطريقة الثانية
فهو يقوم بالتحديث السجلات يعني لو فرضنا وجود 5 سجلات
ان رقم التسلسل بالشكل التالي 2 3 4 5 7
فإنه اذا كان رقم i في ال loop يساوي 1 فان التحديث سوف يكون
1 1 1 1 1
اذا كان رقم i في ال loop يساوي 2 فان التحديث سوف يكون
1 2 2 2 2
اذا كان رقم i في ال loop يساوي3 فان التحديث سوف يكون
1 2 3 3 3
اذا كان رقم i في ال loop يساوي 4 فان التحديث سوف يكون
1 2 3 4 4
اذا كان رقم i في ال loop يساوي 5 فان التحديث سوف يكون
1 2 3 4 5
هنا سوف يرجع لك ان رقم 6 هو رقم المسلسل
طبعا توجد طرق اخرى وارجو ان تكون طريقة الشرح واضحه

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

_______________________________.doc

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

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

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

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

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

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.