الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الرقم التسلسلي

مغلق
بدأه عمر الفاروق في 6 فبراير 2002 · 3 رد · 952 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أقوم بعمل form عن عملية إعارة كتب في مكتبة

وأريد إعطاء رقم تسلسلي للإعارات المطلوبة لكل كتاب

واستعملت الامر التالي

BOOK_LOAN.SERIAL_NO :=:SYSTEM.TRIGGER_RECOR;

لكن المشكلة أن هذا الامر يعطي التسلسل على الشاشة فعلا

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

مثلا (1 ، 2 ،3 ،4) إذا حذفنا 2، 3 يتم التتسلسل من 5

وهذا ليس المطلوب

ملاحظة : يمكن إجراء التسلسل بدون تخزينة في ال DB

وأشكر لكم تعاونكم مقدما

#2

تحياتي للجميع

من الافضل لك اخي الكريم ان تبدأ عملية الترقيم عندك عند الحفظ

بعد عملية الحفظ تتم عملية الترقيم فتكون الارقام متسلسله ... اما اذا حذفت اي سجل بعد ذلك فتكون الارقام غير متسلسله :

ولاجراء عملية الترقيم عند الحفظ يجب عمل الخطوات التاليه :

1- اختيار trigge rpre-insert على مستوى ال(BOOK_LOAN )

وكتابة جملة الselect التاليه :

select nvl(max(SERIAL_NO),0)+1

into :BOOK_LOAN.SERIAL_NO

from BOOK_LOAN;

وان شاء الله ستجد عملية الترقيم عند الحفظ متسلسله في الشاشه وفي قاعدة البيانات

-------------------------------

اما اذا اردت الترقيم على مستوى الform يجب عليك عمل ما يلي :

1- اختر trigger when_new_record_instance على مستوى الblock

2- كتابة بداخله :BOOK_LOAN.SERIAL_NO := :system.cursor_record;

3- وبعد حذف السجل فقط تتم اعادة الترقيم وذلك بكتابه هذا الاجراء

في trigger key-delrec على مستوى الblock ايضا

-----------

delete_record;

first_record;

loop

BOOK_LOAN.SERIAL_NO := :system.cursor_record;

if :system.last_record = 'TRUE' then

exit;

else

next_record;

end if;

end loop;

------------

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

الفراغات بين تسلسل السجلات ...والاجراء السابق يفي بالغرض

وشكرا;)

#3

السلام عليكم

الاخ النبع

لاحظت ان sql%found لا تعمل بعد delete_record في ال trigger key-delrec اما اذا استخدمت في الترقر

delete from table where فيتم حذف السجل من الجدول ولا يتم حذفه من النموذج علما ان النموذج على شكل جدولى tabular

فهل من طريقه لمعرفة هل تم حذف السجل باستخدام sql%found او بطريفة اخرى

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

#4

تحياتي للجميع

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

ولحذف سجل في قاعدة البيانات يستعمل امر delete

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

لا تختفي من الشاشه .... الابعد اجراء عملية استعلام ثانيه

والافضل عمل delete_record .

ولمعرفة ان السجل تم حذفه من قاعدة البيانات قم بعمل جملة select

للسجل المعني وعند فشل جملة الselect يكون السجل غير موجود.

وشكرا

;)

هذا الموضوع مغلق.

مواضيع مشابهة