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

بتاريخ:

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


عندي فورم ماستر ديتيل للكلية وتخصصاتها
بحيث ندخل رقم الكلية بالماستر وتلقائيا ينتج لدينا رقم التخصص حسب المعادلة التالية
رقم التخصص= (رقم الكلية *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;
-----------------------------
و عندما تحفظين يتم ادخال الرقم آليا
-----------------------------
و الله ولي التوفيق

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

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

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

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

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

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.