بتاريخ: 28 مارس 200917 سنة comment_152355 السلام عليكم ورحمة الله وبركاتهأخواني الأعزاء لدي فورم لفاتورة المبيعات مكون من master و detailsفي الديتيل لدي الحقول التاليةline_no,item_no,qty,priceكيف أستطيع عمل تسلسل لأرقام البنود في الفاتورة بحيث يبدأ من 1 إلى آخر صنف في الفاتورةاذا ممكن الحل بدون عمل السيكونز يكون أفضل .وعند عمل فاتورة جديدة يبدأ العدمن 1 مرة ثانية .شاكرا لكم تعاونكم وجزاكم الله خيروجعل ذلك في ميزان حسناتكم تقديم بلاغ
بتاريخ: 28 مارس 200917 سنة comment_152359 --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; تقديم بلاغ
بتاريخ: 28 مارس 200917 سنة كاتب الموضوع comment_152365 جزاك الله خير على الرد ولكن بعد التطبيق لكي ينفذ بدون تكرار يجب عمل حفظ عند كل سجل .هل من طريقة بحيث يتم إدخال جميع السجلات ومن ثم الحفظ .شاكرا لكم وجزاكم الله خير تقديم بلاغ
بتاريخ: 28 مارس 200917 سنة comment_152385 السلام عليكماخي الحبيب...نفس الكود اللي كتبه الاخ SAMRA اكتبه على ترجر PRE-INSERT على مستوى البلوكرح يضيف كل الارقام على الفورم والتخزين عند الضغط على زر الحفظبالتوفيق تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة comment_152394 السلام عليكمجرب الكود دة وانشاء الله هيشتغل معاكاعمل تيكست وسمية سيرال:SERIAL:=:System.Cursor_Record;بالتوفيق تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة كاتب الموضوع comment_152403 السلام عليكمجزاكم الله خير أخواني الأعزاء SAMRA , PALI.ORACLE,ENG_10 على الرد.أخي الكريم PALI.ORACLE بعد وضع الكود فب التريقر PRE-INSERT على مستوى البلوكنفذ تمام . ولكن توجد مشكلة صغيرة وهي أن الحقل LINE_NO حقل إجباري إدخالهلانه جزء من PRIMARY KEY لذلك عند إدخال أرقام عشوائية ومن ثم الحفظ يتم تغيير هذهالأرقام العشوائية الى أرقام مرتبه وهو المطلوب .هل ممكن أن تدخل هذه الارقام في حقل LINE_NO مباشرة بدون تدخل المستخدم ؟؟؟أخي الكريم ENG_10 أين أضع هذا الكود جزاكم الله خير على المساعدة تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة comment_152404 اخي الكريم كما قال الاخ eng_10 فهو الحل الصحيحاما باقي الاخوه فهم يقصدون رقم الفاتوره تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة comment_152408 السلام عليكمتضع الكود في التكست اللى هتدخل منه الرقم وليكن رقم الصنف في الحدث WHEN-VALIDATE-ITEM بالتوفيق تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة comment_152411 اخي end_10 ولماذا لا يكون الكود على مستوى البلوك when_new_record_insance تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة comment_152415 على مستوى الايتم افضل علشان كل ما ينقل لايتم يضع التسلسل بتاعه تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة كاتب الموضوع comment_152419 الأخ eng_10 شكرا على الحل ولكن تظهر مشكلة عند حذف أحد السجلات ومن ثم إضافت سجل جديد حيث يتم تكرار التسلسل هل من حل ......شكرا للأخ awn78 على المشاركة تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة comment_152429 قمت بكتابه الكود فى التريجر الخاص when-new-item-instance ويعمل بشكل سليم وبالطبع هذا بالنسبه لحقل كود الفاتوره if :serial is null then :serial:=:system.cursor_record;end if;هذا بافتراض ان اسم حقل كود الفاتوره هو serial تقديم بلاغ
بتاريخ: 29 مارس 200917 سنة comment_152430 طيب اخي جرب احذف احد بنود الفاتوره او احد السجلات ماذا يحدث في السيريال؟ تقديم بلاغ
بتاريخ: 30 مارس 200917 سنة كاتب الموضوع comment_152489 عزيزي clco73 تظهر مشكلة عند حذف أحد السجلات ومن ثم إضافت سجل جديد حيث يتم تكرار التسلسل مثال :على فرض أدخلنا 5 سجلات في الفاتورة الان الترتيب بعد الادخال صحيح 100%البنود مرتبة من 1 الى 5الان أكتشف المستخدم أن البند الثاني خطأ وقام بحذف هذا البندالان البند الأول المتسلسل له هو 1 البند الثاني المتسلسل له هو 3 البند االثالث المتسلسل له هو 4 البند الرابع المتسلسل له هو 5عند إضافة سجل جديد وهو البند الخامس المتسلسل له سوف يكون 5 وهو موجود أصلاً في البند الرابع أرجو أن تكون الصورة واضحة تقديم بلاغ
بتاريخ: 30 مارس 200917 سنة comment_152503 الأخ العزيز إليك الحل أول شيء طبعا انت مشعايز حد يعدل في ال serial ممكن تخليه display item علشان محدش أصلا يخش عليه2- في نفس البلوك هتقوم بعمل text_item بعدين سميه مثلا cc وخلي الخصائص بتاعته كالتالي نوع بياناته number calculatuion :summrysummry 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; وادعيلي تم تعديل 30 مارس 200917 سنة بواسطة Amgad تقديم بلاغ
بتاريخ: 4 أبريل 200917 سنة كاتب الموضوع comment_152828 جزاك الله خير أخي العزيز mustafagamielعى الحل الرائع أسأل الله الكريم أن يجعل ذلك في ميزان حسناتك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.