الانتقال إلى المحتوى

اين الخطأ !!


ليلاس

Recommended Posts

السلام عليكمممممم


عندي فورم ماستر ديتيل للكلية وتخصصاتها
بحيث ندخل رقم الكلية بالماستر وتلقائيا ينتج لدينا رقم التخصص حسب المعادلة التالية
رقم التخصص= (رقم الكلية *10)+1
هذه المعادلة لإيجاد رقم التخصص للمرة الاولى
يعني مثلا الكلية رقم 12 تكون ارقام تخصصاتها
121
122
123
اما اذا كان لدينا تخصصات واردنا اضافة تخصص آخر يكون بإيجاد اكبر رقم تخصص وإضافة عليه القيمة 1
يعني لو كانت التخصصات الموجودة هي 121و122و123 ,واردنا ادخال تخصص رابع
سوف نأخذ اعلى قيمة وهي (123) ونجمع ليها 1
123+1= 124,,, رقم التخصص الرابع
هاهو الكود والموجود في
WHEN_NEW_RECORD_INSTANCE
في بلوك الديتيلز



declare

tmp1 varchar2(5);


begin if :sp.spid is null then --- for empty record only

select max(to_number(spid)) into tmp1 from sp where sp.colid = :collage.colid;

if tmp1 is null then
tmp1 := to_char(to_number(:collage.colid)*10 + 1);
else

tmp1 := to_char(to_number(tmp1) + 1);

end if;
-- now tmp1 holds new sp id...
--
--
--
:sp.spid := tmp1; -- the new record
go_item('sp.spname');


end if;
end;




ولكن عند التنفيذ ..
يكرر نفس رقم التخصص في كل السجلات ولا يأخذ الماكس للسجلات!!
اين الخطأ
الرجاء مساعدتي

!

اين الخطأ !!

تم تعديل بواسطة ليلاس
رابط هذا التعليق
شارك

يتم تكرار نفس القيمه و لا ياخذ max لسبب بسيط انه لابد من عمل commit بعد كل سجل تقوم بإدخاله
حتى يتم احتسابه ضمن القيم الموجوده فى الجدول
مثلا لدينا فى الجدول اكبر قيمه =100
وفى الفورم يوجد قيمه 200 فى هذه الحاله اكبر قيمه هى الموجوده بالفعل بالجدول =100
لجعلها = 200 لابد من عمل commit;

رابط هذا التعليق
شارك

بحسب معلوماتي و الله يعلم انه من المفروض ان يكوت الكود
في التريجر على مستوى البلوك الذي به الرقم
pre insert
هذا اولا ثم
لقد عدلت في الكود قليلا كما يلي :
--------------------
declare
tmp1 varchar2(5);
begin

select max(NVL(to_number(spid),1))
into tmp1
from sp
where sp.colid = :collage.colid;

if tmp1 is null then
tmp1 := to_char(to_number(:collage.colid)*10 + 1);
else
tmp1 := to_char(to_number(tmp1) + 1);
end if;

:sp.spid := tmp1;
end;
-----------------------------
و عندما تحفظين يتم ادخال الرقم آليا
-----------------------------
و الله ولي التوفيق

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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