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

بتاريخ:

السلام عليكم ورحمة الله وبركاته
أخواني الأعزاء لدي فورم لفاتورة المبيعات مكون من master و details
في الديتيل لدي الحقول التالية
line_no,item_no,qty,price
كيف أستطيع عمل تسلسل لأرقام البنود في الفاتورة بحيث يبدأ من 1 إلى آخر صنف في الفاتورة
اذا ممكن الحل بدون عمل السيكونز يكون أفضل .وعند عمل فاتورة جديدة يبدأ العدمن 1 مرة ثانية .

شاكرا لكم تعاونكم وجزاكم الله خير
وجعل ذلك في ميزان حسناتكم

بتاريخ:

--ON BLOCK-TRIGGER  (WHEN-CREATE-RECORD)
SELECT NVL(MAX(line_no),0)+1 INTO :BLOCK_DETAI.LIEN_NO FROM TABLE_DETAIL WHERE INV_NO=:BLOCK_HEADER.I;NV_NO;

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

جزاك الله خير على الرد ولكن بعد التطبيق لكي ينفذ بدون
تكرار يجب عمل حفظ عند كل سجل .
هل من طريقة بحيث يتم إدخال جميع السجلات ومن ثم الحفظ .

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

بتاريخ:

السلام عليكم
اخي الحبيب...نفس الكود اللي كتبه الاخ SAMRA اكتبه على ترجر PRE-INSERT على مستوى البلوك
رح يضيف كل الارقام على الفورم والتخزين عند الضغط على زر الحفظ
بالتوفيق

بتاريخ:

السلام عليكم
جرب الكود دة وانشاء الله هيشتغل معاك
اعمل تيكست وسمية سيرال
:SERIAL:=:System.Cursor_Record;
بالتوفيق

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

السلام عليكم
جزاكم الله خير أخواني الأعزاء SAMRA , PALI.ORACLE,ENG_10
على الرد.

أخي الكريم PALI.ORACLE بعد وضع الكود فب التريقر PRE-INSERT على مستوى البلوك
نفذ تمام . ولكن توجد مشكلة صغيرة وهي أن الحقل LINE_NO حقل إجباري إدخاله
لانه جزء من PRIMARY KEY لذلك عند إدخال أرقام عشوائية ومن ثم الحفظ يتم تغيير هذه
الأرقام العشوائية الى أرقام مرتبه وهو المطلوب .
هل ممكن أن تدخل هذه الارقام في حقل LINE_NO مباشرة بدون تدخل المستخدم ؟؟؟

أخي الكريم ENG_10 أين أضع هذا الكود

جزاكم الله خير على المساعدة

بتاريخ:

اخي الكريم كما قال الاخ eng_10 فهو الحل الصحيح
اما باقي الاخوه فهم يقصدون رقم الفاتوره

بتاريخ:

السلام عليكم
تضع الكود في التكست اللى هتدخل منه الرقم وليكن رقم الصنف في الحدث WHEN-VALIDATE-ITEM
بالتوفيق

بتاريخ:

اخي end_10 ولماذا لا يكون الكود على مستوى البلوك when_new_record_insance

بتاريخ:

على مستوى الايتم افضل علشان كل ما ينقل لايتم يضع التسلسل بتاعه

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

الأخ eng_10 شكرا على الحل
ولكن تظهر مشكلة عند حذف أحد السجلات ومن ثم إضافت سجل جديد حيث يتم تكرار التسلسل
هل من حل ......

شكرا للأخ awn78 على المشاركة

بتاريخ:

قمت بكتابه الكود فى التريجر الخاص when-new-item-instance ويعمل بشكل سليم وبالطبع هذا بالنسبه لحقل كود الفاتوره

if :serial is null then
:serial:=:system.cursor_record;
end if;

هذا بافتراض ان اسم حقل كود الفاتوره هو serial

بتاريخ:

طيب اخي جرب احذف احد بنود الفاتوره او احد السجلات ماذا يحدث في السيريال؟

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

عزيزي clco73
تظهر مشكلة عند حذف أحد السجلات ومن ثم إضافت سجل جديد حيث يتم تكرار التسلسل
مثال :

على فرض أدخلنا 5 سجلات في الفاتورة الان الترتيب بعد الادخال صحيح 100%
البنود مرتبة من 1 الى 5

الان أكتشف المستخدم أن البند الثاني خطأ وقام بحذف هذا البند
الان البند الأول المتسلسل له هو 1
البند الثاني المتسلسل له هو 3
البند االثالث المتسلسل له هو 4
البند الرابع المتسلسل له هو 5
عند إضافة سجل جديد وهو البند الخامس المتسلسل له سوف يكون 5 وهو موجود أصلاً
في البند الرابع أرجو أن تكون الصورة واضحة

بتاريخ:

الأخ العزيز إليك الحل
أول شيء طبعا انت مشعايز حد يعدل في ال serial
ممكن تخليه display item علشان محدش أصلا يخش عليه
2- في نفس البلوك هتقوم بعمل text_item بعدين سميه مثلا cc وخلي الخصائص بتاعته كالتالي
نوع بياناته number
calculatuion :summry
summry function :count
اختر البلوك الاي فيه السيريل summrized bloc:
اسم الايتم خليه على السيريل summrized item
وبعد كده ممكن تخفي هذا الايتم

في نفس البلوك في تريجر when_new_record_insance
اكتب :serial:=:System.Cursor_Record;

إلى الان نفس المشكلة وهي عند الحذف لايلتزم بالترتيب
في مثلا زر الحذف أو قبل الحفظ ضع هذا الكود

go_block('your block name');
declare
 x  number;
begin --fetch_count:=get_block_property('ABSENCE',records_displayed);
select :cc into x from dual;
 first_record;
 for i in 1.. x loop
 
if :system.last_record<>'true' then
:empno:=:System.Cursor_Record;
 next_record;
 end if;

end loop;
 first_record;
end;


وادعيلي

تم تعديل بواسطة Amgad

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

جزاك الله خير أخي العزيز mustafagamiel
عى الحل الرائع
أسأل الله الكريم أن يجعل ذلك في ميزان حسناتك

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

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

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

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

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

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.