الانتقال إلى المحتوى

مساعدة في كود


miash80

Recommended Posts

السلام عليكم ورحمة الله وبركاته

أخواني الاعزاء ....

عندي مشكلة :.

يوجد عندي شاشة خاصة بفواتير بيع خاص ببيع الادوية في صيدلية وهذه الشاشة عبارة عن بلوكين ماستر ودتيل

في بلوك الديتل يوجد بيانات الخاصة برقم المادة واسمها وتاريخ الصلاحية و الكمية المراد بيعها .

ويوجد على الحقل الخاص بالكمية ترجير يعمل على مقارنة الكمية الموجودة على الشاشة مع مجموع الكميات الموجودة في جدول اسمه Item_Det

لانه يوجد في هذا الجدول اكثر من ريكورد للمادة الواحدة وهذا هو حقول الجدول

(ITEM_NO,SER_NO,EXPIRE_DATE,QTY,COST_PRICE,SALE_PRICE)

يعني ممكن يكون للدواء اكثر من كمية واكثر من تاريخ واكثر من تكلفة وممكن يتكرر نفس التاريخ ونفس التكلفة .

سؤالي على فرض اني عندي هذه البيانات في جدول ال Item_Det

ITEM_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 حبات

السؤال هنا كيف نكتب هذا الكود الذي يعمل على الخصم .

رابط هذا التعليق
شارك

أخي العزيز الموضوع ليس بحاجة للشكل الفورم .

الموضوع ببساطة عندي شاشة خاصة بفواتير الادوية فيها رقم واسم

وتكلفة وتاريخ الصلاحية والكمية لكل دواء

في حالة اخترت احدى انواع الادوية واخترت الكمية مثلا 11 علبة وتاريخ الصلاحية 01/01/2020 مثلا

وعندي في جدول الItem_Det اكثر من سجل يخص هذا الدواء على سبيل المثال

عندي في سجل 9 علب دواء تاريخ الصلاحية 01/01/2020

عندي في سجل 5 علب دواء تاريخ الصلاحية 01/01/2020

عندي في سجل 9 علب دواء تاريخ الصلاحية 05/05/2010

المفروض عندما اعملUpdate لـــــجدول الــــــــــــــــــ Item_Det

يخصم من اول سجل 9 علب ومن ثاني سجل حبتين .

كيف اكتب جملة الــــــUpdate

أرجو ان اكون وضحت الصورة .

رابط هذا التعليق
شارك

أخي العزيز ...

هذا الجدول تصب فيه البيانات من اكثر من جدول وتكرر فيه رقم الدواء وتاريخ الصلاحية والتكلفة وهذا لا يهمني

ان الذي يهمني كيف اخصم الكمية من سجلين تشابه فيهما رقم وتاريخ الصلاحية والتكلفة يعني اخصم الكمية

من السجل الاول واذا لم تكفي الكمية اخصم من السجل الثاني واذ لم تكفي من السجل الثالث ....الخ

سؤالي واضح أخي العزيز .

رابط هذا التعليق
شارك

السلام عليكم...
أكيد أنا ما عم اسألك لأني كتير سعيد بالأسئلة...أنا هدفي المساعدة...و بعدين ما في شي اسمو ما بهمني لأنو كل شي مرتبط ببعضو

تم تعديل بواسطة TROYMAN
رابط هذا التعليق
شارك

أخي العزيز شكرا على الاهتمام

عندي هذه البيانات كيف اعمل الـــــــــــــــــــــــUpdate

رابط هذا التعليق
شارك

السلام عليكم...
كنت عم حاول حلّها على العودية بس واجهتني بعض المشاكل لذلك حللتها عن طريق الحلقات التكرارية..و إن شاء الله بدي حاول حلها عودياً
تفضل الحل:

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)

تم تعديل بواسطة TROYMAN
رابط هذا التعليق
شارك

لا داعي للشكر أخي miash80...الفضل لله عز و جل وحده



اريد عمل كود لحزف سجل من الشاشة وقاعدة البيانات


هذا قصدك؟

delete from TableName (Here put a Specific Condition)
تم تعديل بواسطة TROYMAN
رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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