بتاريخ: 15 يوليو 200916 سنة comment_163306 السلام عليكم سوري يا اخوان مش بدخل الموقع دة في بعض الاحيان بس محتاجة رد ضروري لو سمحتو عندي جدول في رئيسي وفرعي مش عايزة يحفظ الرئيسي طالما الفرعي فارغ ما فيه بياناتمنتظرة الرد منكم والله شكرا تقديم بلاغ
بتاريخ: 15 يوليو 200916 سنة comment_163312 هتعمل تريجر PRE-insert IF :YOUR_BLCOK.ITEM_IN BLOCK (THIS ITEM REQUIRD HAVE DATA) IS NULL THEN RAISE FORM_TRIGGER_FAILURE; END IF ; هتعمل تريجر وتشوف اي ايتم على البلوك الفرعي ( بس طبعا الايتم ده مينفعش يكون فاضي ) وهتقوله شوف الايتم ده لو فاضي ما تعملش حاجة ، ده الكود اللي مكتوب فوق تقديم بلاغ
بتاريخ: 15 يوليو 200916 سنة كاتب الموضوع comment_163313 شكرا على ردك بس جربته ما بيشتغل عندي في الجدول المتاح اللى بيربط بين الجدولين هو الحقل invoice_num تقديم بلاغ
بتاريخ: 15 يوليو 200916 سنة comment_163317 يافندم هو حضرتك حاطط التريجر PRE-insert على اي بلوك ؟؟هتحطه على الماستر ثانيا : ماينفعش يكون الشرط بتاعك هو حقل الربط ، عشان انت لما بتعمل ريلاشن فيه خاصية اسمها COPY VALUE FROM ITEM من غير ما تعمل حضرتك حاجة بتملأ لوحدها من الحقل المربوط بيه من الماستر الخطوات كالتالي :1- على البلوك الماستر هتعمل التريجر اللي قولنا عليه2- الشرط هيكون على ايتم في البلوك الفرعي ، الايتم ده مايكونش ايتم الربط ، الايتم ده لازم يكون ركويرد ، يعني من الاخر ما يبنفعش يكون NULL في الداتابيز لو حضرتك عامل كده من الاول وبرضه حفظ ، ممكن ترفع الفورمة بس بلاش RWR ، احفظها بامتداد TXT ارفعها منتظرك تقديم بلاغ
بتاريخ: 15 يوليو 200916 سنة comment_163319 السلام عليكمهو حل أخي عبدالله صحيح على افتراض ان عندك حقل في الديتيل requird لكن ممكن حل اخرفي بلوك الديتيل يمكنك عمل أيتم جديد وتغير في خصائصه كالتاليتخلي نوع البيانات numberي موضوع ال calculationcalculation mode=summarusummary function =countsumrrized loc==detail_blocksumrrizes_item=item that must ineter in it dataخاصية number of item displayed=1بعد كدا في تريجر pre insert على مستوى master block if :xx=0 then message('you must enter at leat one record'); message('you must enter at leat one record'); raise form_trigger_failure; end if; على اساس الايتم الجديد اسمه xxوممكن تخفيهموفقين تقديم بلاغ
بتاريخ: 15 يوليو 200916 سنة comment_163370 السلام عليكمطريقة أخرى:ممكن عمل بروسيجر ويتم كتابته داخل الـــ PROGRAM UNIT PROCEDURE CHK_RV IS ALERT_BUTTON NUMBER; BEGIN IF NVL(:BLK1.F_RV,0 ) = 0 THEN ALERT_BUTTON := SHOW_ALERT( 'RV' ); IF ALERT_BUTTON = ALERT_BUTTON1 THEN RAISE FORM_TRIGGER_FAILURE; END IF; END IF; END; ويتم استدعاء اسم البروسيجر على زر الحفظ وعلى ترجر ON-COMMIT ويتم كتابة فيه : CHK_RV; بالتوفيق تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.