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

تعديل البيانات في Tabular

Featured Replies

بتاريخ:

لي طلب يا جماعة
انا عملت شاشة فيها tabular مكون من رقم الصنف و الكمية
وبعد ان اقوم بادخال كل record"صف" اريد ان اقوم بعمل اختبار للبيانات الموجودة في ال tabular
فان كان هناك نفس الصنف
يضيف الكمية الجديدة الى ال record السابق ويلغي ال record الحالي

ملحوظة: اريد ان يحدث كل هذا على الشاشة أي قبل ان اقوم بعمل insert داخل ال database

ارجوكم احتاج الى المساعدة ضروري حدا
وجزاكم الله خيرا

بتاريخ:

بص ياباشا

فى زر حفظ

تعمل cursor يقوم بعمل استعلام بشرظ اسم الصنف و اذا وجد يقوم بعمل تحديث للكميه و اذا لم يجد يقوم بعمل ادخال سجل جديد

ايهاب وجدى

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

مشكور على الاجابة
ولكن لم يكن هذا ما اقصده
ساوضح ما اريده بمثال:
مثلا عند الكاشير عندما يقوم بادخال بيانات الاصناف المشتراة فاذا كان هناك صنفين متماثلين فانه عندما يدخل الصنف للمرة الاولى يظهر كالتالي<_<بافتراض ان الصنف المقصود كوده 1001)

كود الصنف الكمية
1002 1
1003 1
1001 1
1004 1

و عند ادخال بيانات الصنف مرة اخرى لا يظهر في سطر جديد وانما تضاف الكمية :

كود الصنف الكمية
1002 1
1003 1
1001 2
1004 1


مع العلم اني اريد كل هذا على الشاشة فقط اي دون ان اعمل حفظ في ال database
ولهذا لن اتمكن من عمل cursor


وجزاكم الله خيرا

بتاريخ:

السلام عليكم و رحمة الله و بركاته
أخى الفاضل...ممكن تجرب تعمل فى تريجر key_nxtrec

declare
sanf_id number;
sanf_qty number;
tmp_id number;
begin sanf_id := :blk_nm.sanf_id;
sanf_qty := :blk_nm.sanf_quantity; -- saving the values of the current record.
go_block('blk_nm'); -- your block name here.
first_record;
loop
	if :blk_nm.sanf_id = sanf_id then
		  :blk_nm.sanf_id := :tmp_id;
		  :blk_nm.sanf_quantity := :blk_nm.sanf_quantity + sanf_qty;
	end if;
  next_record;
  exit when  :system.last_record = 'true';
end loop;
if :blk_nm.sanf_id = tmp_id then
	clear_record; 
end if; -- this will delete the repeated record.
end;

بتاريخ:

أرجو ان يحقق هذا الكود ماتريده و أنا معك ان شاء الله فى أى تعديلات تودها.

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

جزاك الله خيرا على الاهتمام
ولكن اريد بعض التوضيحات:

ما هي فائدة هذا المتغير tmp_id number;

وما هي وظيفة هذه الجملة :blk_nm.sanf_id := :tmp_id;

اخيرا هل اقوم بوضع هذا ال trigger (key_nxtrec) في sanf_quantity

بتاريخ:

بسم الله نبدأ..
عند إضافة records جديدة فإنه من البديهى اننا فى أخر سجل last_record لذا فإن هذا الكود والذى ينفذ بعد كل ريكورد يمر على البلوك من أول ريكورد الى الآخر (والذى تمت اضافته مؤخرا)..
المتغير tmp_id هو الذى يحمل قيمة كود الصنف المتكرر.

declare
sanf_id number;
sanf_qty number;
tmp_id number;
begin sanf_id := :blk_nm.sanf_id;
 sanf_qty := :blk_nm.sanf_quantity; -- saving the values of the current record.
 /* start searching for repeated items*/
 go_block('blk_nm'); -- your block name here.
 first_record;
 loop
   if :blk_nm.sanf_id = sanf_id then --found a record with the same sanf_id..will return true if only the last record was repeated.
     :blk_nm.sanf_id := :tmp_id; --holding id of repeated sanf in a tmp variable for future use in checking&deleting repeated one.
     :blk_nm.sanf_quantity := :blk_nm.sanf_quantity + sanf_qty; -- updating the original item quantity
   end if;
 next_record; -- keep searching & looping
 exit when :system.last_record = 'true'; --exit condition
 end loop;
 /* now we are at the last record, the one we just entered & came out to be repeated above*/
 if :blk_nm.sanf_id = tmp_id then -- checking if it was repeated..see the first 'if condidtion' again.
   clear_record; 
 end if; -- this will delete the repeated record.
 
end;


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

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

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

وانا شاكر لك على المجهود واسف على ازعاجك

sanf_qty.zip

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

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

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

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

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

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.