بتاريخ: 3 يوليو 200718 سنة comment_104008 السلام وعليكم أخواني الاعضاء والمشرفين ارجو مساعدتي باسرع وقت في المشكلة عندي في النظام جدول مخازن الاصناف في فورم وبلوك مستقل وعندي جدول فواتير مشتريات ومبيعات كل جدول في فورم مستقل اريد عند اصدار الفواتير يقوم النظام تلقائي بتنقيص الكمية من الجدول حق الاصناف اريد الكود الذي يقوم بتنقيص الكمية من المخزن تلقائي عند اصدار الفواتير واذا الكمية اكبر من الي في المخزن يطلع رسالة انه الكمية لاتكفي ملاحظة انه كل جدول له فورم مستقل عن الاخر يعني عند تشغيل الفواتير يكون جدول المخازن ليس شغال طبعن وصلت الي بعض الاكوراد ولم يتنفذ معايا وهو عن طريق select وال update ولم يتنفذ معايا ارجو المساعدة ولكم جزيل الشكر تقديم بلاغ
بتاريخ: 3 يوليو 200718 سنة comment_104011 أخي الفاضل لنفترض أن جدول المخزن إسمه stock_details والعمود الذي به رقم الصنف Item_no العمود الموجود بيه الرصيد هو item_balanceوأن جدول الفواتير يحتوى على العمود الذي به الكميةهوinv_item_qty وأيضا يحتوى على عمود رقم الصنف item_noمن الفورم الخاص بالفاتورأضف الكود التالي عند الزناد Post-Insertupdate stock_detailsset itme_balance= item_balance-item_qtywhere item_no = item_no;وإن شاء الله هتشتغل معاك تقديم بلاغ
بتاريخ: 3 يوليو 200718 سنة comment_104013 الاخ الكريميمكن عمل ذلك عن طريق عمل trigger علي الداتاباسعلي كل اذن ادخال لكل سجل يقوم بزيادة الكمية الموجودة بالمخزن بالمقدار المضاف في السجلويتم تنفيذه في حالة الupdate and deleteوعمل واحد اخر في حالة الصرف مثل السابق مع ملاحظة ان الفرق هو ان الاول يتم اضافة الكمية اما الثاني فيقوم بالخصماما بالنسبة للصرف فعند الرغبة في الاستعلام عن الكمية فسيكون التريجر قام بوضع القيمة الصحيحة وفي تلك الحالة نختارها من الجدول الاصناف ونقارنها بالكمية المدخلة من قبل المستخدمسلام تقديم بلاغ
بتاريخ: 3 يوليو 200718 سنة كاتب الموضوع comment_104016 اخواني مشكورين على الرد بس المشكلة انه عندما افعل هذا الكود مايتعرف على الترايجر حق المخازنوبعدين يعطينا مشكلة يقول تسبب زنا Post-Insert في مشكلة عند حفظ الفاتورةلان الترايجر مش نفس الفورم حق الفواتير يكون في فورم لوحدة ضروري استدعي الفورم بجملة SELECT ارجو المساعدة في الكود كامل تقديم بلاغ
بتاريخ: 3 يوليو 200718 سنة comment_104020 أخي يمكنك عمل زر وليكن اسمه صرف بضاعة مثلا وتضع تحته الكود التالي DECLARE A NUMBER; B NUMBER; D NUMBER; E NUMBER; F NUMBER; X NUMBER; T TIMER; BEGIN SET_ALERT_PROPERTY('ALERT1',ALERT_MESSAGE_TEXT,هل تريد صرف الكميات المذكورة); SET_ALERT_BUTTON_PROPERTY('ALERT1',ALERT_BUTTON1,LABEL,'نعم'); SET_ALERT_BUTTON_PROPERTY('ALERT1',ALERT_BUTTON2,LABEL,'لا'); SET_ALERT_BUTTON_PROPERTY('ALERT1',ALERT_BUTTON3,LABEL,NULL); A:=SHOW_ALERT('ALERT1'); IF A=ALERT_BUTTON1 THEN SELECT COUNT(*) INTO B FROM INVOICE_MASTER WHERE INV_MAS_ID=:INVOICE_MASTER.INV_MAS_ID; IF B=1 THEN SELECT COUNT(*) INTO D FROM INVOICE_MASTER WHERE INV_MAS_ID=:INVOICE_MASTER.INV_MAS_ID AND POST=0; IF D=1 THEN T:=CREATE_TIMER('ASHRAF',100,NO_REPEAT); UPDATE INVOICE_MASTER SET POST=1 WHERE INV_MAS_ID=:INVOICE_MASTER.INV_MAS_ID; GO_BLOCK('INVOICE_MASTER'); SET_ITEM_PROPERTY('IT1',NAVIGABLE,PROPERTY_FALSE); SET_ITEM_PROPERTY('IT1',enabled,PROPERTY_FALSE); DECLARE CURSOR ASH IS SELECT ITEM_SERIAL,UNIT_PRICE,AMOUNT,P_PRICE FROM INVOICE_DETAILS WHERE invoice_details.inv_mas_id=:invoice_master.inv_mas_id; BEGIN ------------------------------------------------------------------------ IF :GLOBAL.RAM IN (1,3) THEN FOR I IN ASH LOOP UPDATE ITEM_tree SET AMOUNT=AMOUNT-I.AMOUNT WHERE ITEM_ID=I.ITEM_SERIAL; END LOOP; ELSIF :GLOBAL.RAM IN (2,4) THEN FOR I IN ASH LOOP ------------------------------- UPDATE ITEM_TREE SET AMOUNT=NVL(AMOUNT,0)+I.AMOUNT , P_PRICE=I.UNIT_PRICE ,S_PRICE=I.P_PRICE WHERE ITEM_ID=I.ITEM_SERIAL; END LOOP; END IF; -------------------------------------------------------------------------------------- exception when others then declare serv_err number :=abs(dbms_error_code); serv_msg varchar2(200):=dbms_error_text; begin rollback; message('Error during update'||''||to_char(serv_err)||'-'||serv_msg); --raise form_trigger_failure; end; ------------------------------------------------------------------- END; COMMIT; ELSE message('عفواً: هذه الفاتورة تم ترحيلها من قبل '); RAISE FORM_TRIGGER_FAILURE; BELL; END IF; ELSE message('عفواً: يجب حفظ الفاتورة قبل عمل ترحيل لها '); BELL; RAISE FORM_TRIGGER_FAILURE; END IF; ELSIF A=ALERT_BUTTON2 THEN NULL; END IF; END; اعزرني اخي لأني أخدت الكود نسخ ولصق من برنامج أنا عاملة وشغال تمام جرب وان شاء الله يشتغل معاك ولو فيه أي استفسار أنا في الخدمة تقبل تحياتي تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.