BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: Guitar-hero ที่ กันยายน 26, 2011, 18:52:18 PM
-
คือ ติดปัญหาเรื่องการออกแบบในเรื่อง stockcard ครับ คือ ตอนที่ผมทำรายงานผมต้องการให้มันแสดงผลตามด้านล่างนี้
เช่น เมื่อเราคีย์รหัสสินค้า 0001 ก็จะแสดงรายละเอียดสินค้านั้น พร้อมรายงานประวัติการรับ-จ่ายสินค้า พร้อมบอกยอดคงเหลือแต่ละครั้งเมื่อมีการทำรายการ เช่นด้านล่างนี้
วันที่ เลขที่รับ-จ่าย รับเข้า จ่ายออก ยอดคงเหลือ
01/09/54 R00001 50 50
02/09/54 R00002 20 70
03/09/54 E00001 10 60
04/09/54 E00002 15 45
ควรออกแบบตาราง stockcard นี้ยังไงและกระบวนการ query ควรทำอย่างไร ผมติดตรง ยอดคงเหลือนี้แหล่ะครับ คิด concept การทำงานไม่ออก ใครพัฒนาระบบนี้อยู่รบกวนด้วยนะครับ ขอนอกเรื่อง hosxp นิดนึงครับ
-
1. ส่วนแรกเลยก็คือ การเลือกยาออกมาด้วย Function SQLGETDATA String (ในนี้มีอยู่แล้วกับการใช้ Function นี้ครับ หาดูเอาครับ)
2. เลือกช่วงเวลาครับ (ตัวอย่างในนี้ก็มีเยอะ หาดูได้ครับ)
3. ครับประวัติการรับ-จ่าย Track ดูได้จากหน้าห้องยาครับ ว่าอยู่ตารางไหนครับ
ยอดคงเหลือตรงนี้ผมไม่เคยได้้ใช้ครับ รอให้ผู้รู้ท่านอื่นมาช่วยตอบครับ
-
แบบนี้ได้ไหมครับ
table stock_card
วันที่ pcode เลขที่รับ-จ่าย ptype pValue ยอดคงเหลือ
01/09/54 0001 R00001 I 50 50
02/09/54 0001 R00002 I 20 70
03/09/54 0001 E00001 O 10 60
04/09/54 0001 E00002 O 15 45
table product
pcode pname
0001 สินค้า 1
select p.pcode,sum(s1.pValue)-sum(s2.pValue) from product p
left outer join stock_card s1 on(p.pcode=s1.pcode and ptype="I")
left outer join stock_card s2 on(p.pcode=s2.pcode and ptype="O")
where p.pcode='0001'
-
แบบนี้ได้ไหมครับ
table stock_card
วันที่ pcode เลขที่รับ-จ่าย ptype pValue ยอดคงเหลือ
01/09/54 0001 R00001 I 50 50
02/09/54 0001 R00002 I 20 70
03/09/54 0001 E00001 O 10 60
04/09/54 0001 E00002 O 15 45
table product
pcode pname
0001 สินค้า 1
select p.pcode,sum(s1.pValue)-sum(s2.pValue) from product p
left outer join stock_card s1 on(p.pcode=s1.pcode and ptype="I")
left outer join stock_card s2 on(p.pcode=s2.pcode and ptype="O")
where p.pcode='0001'
select p.pcode,sum(s1.pValue)As รับ,sum(s2.pValue) As จ่าย, sum(s1.pValue)-sum(s2.pValue) from product p
left outer join stock_card s1 on(p.pcode=s1.pcode and ptype="I")
left outer join stock_card s2 on(p.pcode=s2.pcode and ptype="O")
where p.pcode='0001'
-
set @n:=0;
select pcode,p.date,if(left(docno,1)='R',pvalue,0) 'R',if(left(docno,1)='E',pvalue,0) 'E'
,@n:=@n+if(left(docno,1)='R',pvalue,-pvalue) 'Total'
from stock_card
where pcode=?
order by pdate
ประมาณนี้มั๊ย