miash80 بتاريخ: 12 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 12 مارس 2009 السلام عليكم ورحمة الله وبركاتهأخواني الاعزاء ....عندي مشكلة :.يوجد عندي شاشة خاصة بفواتير بيع خاص ببيع الادوية في صيدلية وهذه الشاشة عبارة عن بلوكين ماستر ودتيل في بلوك الديتل يوجد بيانات الخاصة برقم المادة واسمها وتاريخ الصلاحية و الكمية المراد بيعها .ويوجد على الحقل الخاص بالكمية ترجير يعمل على مقارنة الكمية الموجودة على الشاشة مع مجموع الكميات الموجودة في جدول اسمه Item_Det لانه يوجد في هذا الجدول اكثر من ريكورد للمادة الواحدة وهذا هو حقول الجدول (ITEM_NO,SER_NO,EXPIRE_DATE,QTY,COST_PRICE,SALE_PRICE)يعني ممكن يكون للدواء اكثر من كمية واكثر من تاريخ واكثر من تكلفة وممكن يتكرر نفس التاريخ ونفس التكلفة .سؤالي على فرض اني عندي هذه البيانات في جدول ال Item_DetITEM_NO SER_NO EXPIRE_DATE QTY COST_PRICE SALE_PRICE 8 5 6 01/01/2010 1 111 8 5 5 01/01/2010 2 111 9 6.5 9 08 /08/2055 3 111 وعلى شاشة البيع اخترت الدواء رقم 111 بتاريخ 01/01/2010 والكمية 9 علب عندما يشبك الترجر يجد مجموع هذا الدواء لنفس التاريخ 11 علبة فيكمل دون اعترراضالمشكلة ليس هنا .عند عمل Update بالكمية يجب ان ينقص من اول ريكورد 6 حبات ومن ثاني ريكورد الباقي يعني 3 حبات السؤال هنا كيف نكتب هذا الكود الذي يعمل على الخصم . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmad.Hasan بتاريخ: 12 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 12 مارس 2009 السلام عليكماخي ممكن ترفق الفورم ؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 13 مارس 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 13 مارس 2009 أخي العزيز الموضوع ليس بحاجة للشكل الفورم .الموضوع ببساطة عندي شاشة خاصة بفواتير الادوية فيها رقم واسم وتكلفة وتاريخ الصلاحية والكمية لكل دواءفي حالة اخترت احدى انواع الادوية واخترت الكمية مثلا 11 علبة وتاريخ الصلاحية 01/01/2020 مثلاوعندي في جدول الItem_Det اكثر من سجل يخص هذا الدواء على سبيل المثال عندي في سجل 9 علب دواء تاريخ الصلاحية 01/01/2020عندي في سجل 5 علب دواء تاريخ الصلاحية 01/01/2020عندي في سجل 9 علب دواء تاريخ الصلاحية 05/05/2010المفروض عندما اعملUpdate لـــــجدول الــــــــــــــــــ Item_Detيخصم من اول سجل 9 علب ومن ثاني سجل حبتين .كيف اكتب جملة الــــــUpdateأرجو ان اكون وضحت الصورة . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TROYMAN بتاريخ: 13 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 13 مارس 2009 السلام عليكم...طيب ليش كمية نفس الدواء مقسّمة على عدة سجلات , بمعنى آخر شو الفرق بين سجلات نفس الدواء؟؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 13 مارس 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 13 مارس 2009 أخي العزيز ...هذا الجدول تصب فيه البيانات من اكثر من جدول وتكرر فيه رقم الدواء وتاريخ الصلاحية والتكلفة وهذا لا يهمني ان الذي يهمني كيف اخصم الكمية من سجلين تشابه فيهما رقم وتاريخ الصلاحية والتكلفة يعني اخصم الكميةمن السجل الاول واذا لم تكفي الكمية اخصم من السجل الثاني واذ لم تكفي من السجل الثالث ....الخسؤالي واضح أخي العزيز . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TROYMAN بتاريخ: 13 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 13 مارس 2009 (معدل) السلام عليكم...أكيد أنا ما عم اسألك لأني كتير سعيد بالأسئلة...أنا هدفي المساعدة...و بعدين ما في شي اسمو ما بهمني لأنو كل شي مرتبط ببعضو تم تعديل 13 مارس 2009 بواسطة TROYMAN اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 13 مارس 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 13 مارس 2009 أخي العزيز شكرا على الاهتمامعندي هذه البيانات كيف اعمل الـــــــــــــــــــــــUpdate اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TROYMAN بتاريخ: 13 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 13 مارس 2009 ولا يهمك غداً إن شاء الله بحط الحل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 14 مارس 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 14 مارس 2009 تسلم أخي العزيز....وانا بأنتظار الحل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TROYMAN بتاريخ: 15 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 15 مارس 2009 (معدل) السلام عليكم...كنت عم حاول حلّها على العودية بس واجهتني بعض المشاكل لذلك حللتها عن طريق الحلقات التكرارية..و إن شاء الله بدي حاول حلها عودياًتفضل الحل: ccreate or replace procedure pro_M (PItemNo number,PQTY number) is rec Item_Det%rowtype; Rem number:=0; Psum number:=0; cursor cur is select * from Item_Det where Item_No=PItemNo and QTY<>0 order by QTY desc; begin select sum(QTY) into Psum from Item_Det where Item_No=PItemNo; if Psum<PQTY then dbms_output.put_line('The intended QTY is greater than available'); return; end if; open cur; fetch cur into rec; Rem:=PQTY-rec.QTY; if Rem>0 then while Rem>0 loop update Item_Det set QTY=0 where Item_No=PItemNo and SER_NO =rec.SER_NO ; /*Or Delete from Item_Det where Item_No=PItemNo and SER_NO =rec.SER_NO;*/ fetch cur into rec; Rem:=Rem-rec.QTY; end loop; close cur; end if; if Rem=0 then update Item_Det set QTY=0 where Item_No=PItemNo and SER_NO =rec.SER_NO ; /*Or Delete from Item_Det where Item_No=PItemNo and SER_NO =rec.SER_NO;*/ return; elsif Rem<0 then update Item_Det set QTY=abs(Rem) where Item_No=PItemNo and SER_NO =rec.SER_NO ; return; end if; end; / You can call the procedure by the Trigger body : create or replace trigger tri_ItemDet before update of QTY on Item_Det for each row call pro_m(:old.Item_No,:new.QTY) تم تعديل 15 مارس 2009 بواسطة TROYMAN اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 15 مارس 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 15 مارس 2009 لا اعرف ماذا اقول لك أخي TROYMAN الله يبارك فيك وفي واهلك الطيبين اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
قديم بتاريخ: 15 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 15 مارس 2009 اريد عمل كود لحزف سجل من الشاشة وقاعدة البيانات اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TROYMAN بتاريخ: 15 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 15 مارس 2009 (معدل) لا داعي للشكر أخي miash80...الفضل لله عز و جل وحده اريد عمل كود لحزف سجل من الشاشة وقاعدة البيانات هذا قصدك؟delete from TableName (Here put a Specific Condition) تم تعديل 15 مارس 2009 بواسطة TROYMAN اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.