หาผลรวม
กระทู้เก่าบอร์ด อ.Yeadram

 6,959   27
URL.หัวข้อ / URL
หาผลรวม


1. จากรูปอยากได้ยอดรวมราคาสินค้าที่ขาย ไว้ข้างล่าง รายการขาย

*****************************************

2.และต้องการ อยากได้ผลรวมยอดขาย แยกเป็นรายลูกค้า

ว่าลูกค้ามีการเคลื่อนไหวซื้อสิ้นค้า แบบรายวัน เดือน ปี สรุปรายปี

ผลลัพธ์ ในฟอร์มการเคลื่อนไหวลูกค้า มี combobox ไว้เลือกเดือน มีรายละเอียดรายวัน ละสรุปรายเดือน

[Cusid] :
----------สรุปเดือน------------------------
jan-2010......40
-------------------
1-1-2010.........15
2-1-2010..........20
3-1-2010..........5

----------สรุปเดือน--------------------------------------
feb-2010............14
------------------------
1-2-2010...........3
2-2-2010...........5
3-2-2010.............6


----------------------------------

และรายละเอียดสรุปรายปี เอาแค่ยอด sum งวดๆ ไปแสดงอีกแท็ปใหม่ ในฟอร์มเดี่ยวกัน
มี combobox ไว้เลือกปี มีรายละเอียดการเคลือนไหวรวมรายเดือน ละสรุปรายปี
-----------สรุปรายปี-----------------------
2010....................54
[Cusid] :
jan-2010............40
feb-2010............14

ผมต้องเพิ่ม ตาราง หรือ ฟิล อะไรเพิ่มเติมหรือไม่ รบกวนแนะนำด้วยครับ

ปล. ขอโทษด้วยครับที่กระทู้เดิม จั่วหัวผิดครับ

27 Reply in this Topic. Dispaly 2 pages and you are on page number 1

1 @R11271
มีตารางข้อมูลอะไรบ้าง เก็บข้อมูลอย่างไรครับ
2 @R11280
From สร้างจาก คิวรี่ ตาราง customers+order ผูกกันด้วย (cusid)
customer :
cusid = text
cusname = text
cusser = text

order :
orderid = autonumber
orderdate = date/time
cusid = text
-------------------------------------------
subfrom สร้างจากคิวรี่ ตาราง orderdetail+product ผูกกันด้วย (proid)
product :
ID = Autonumber
Proid=text
proname=text
propri=currency

orderdetail :
ID = Autonumber
orderid = number
proid=text
quantity = number

มีการเพิ่ม ฟิลว์ในคิวรี่      Price: [Pro_Pri]*[Quantity]
---------------------------------------------

From+subfrom ผูกกันด้วย (orderid)

ตามนี้ครับ
3 @R11282
ก่อนตอบคำถาม
FROM(แปลว่า จาก) ต้องเป็น FORM ครับ
customer :
cusid = text
cusname = text
cusser = text

product :
ID = Autonumber ทำไมต้องมี ฟิล์ดนี้ แยกจาก ProID อย่างไร
      ทำไมตาราง Customer ไม่มีฟิลด์ ID
Proid=text
proname=text
propri=currency

order :
orderid = autonumber
orderdate = date/time
cusid = text

orderdetail :
ID = Autonumber ทำไมต้องมี ฟิล์ดนี้ เอาไว้ทำอะไรครับ
orderid = number
proid=text
quantity = number

มีการเพิ่ม ฟิลว์ในคิวรี่      Price: [Pro_Pri]*[Quantity]
ต้องถามว่า จะมีการปรับราคา ในอนาคตหรือไม่
ถ้ามี จะทำให้ราคาเปลี่ยน มูลค่าสินค้าก็เปลี่ยนตาม
ต้องเพิ่มฟิลด์ ราคาในตาราง OrderDetail เพื่อเก็บราคาด้วย
4 @R11283
ขอบคุณครับ
id จากทั้ง 2 ตาราง ไม่ได้มีส่วนเกี่ยวข้องใด ๆ ในโปรแกรมเลยครับ แค่เอาไว้ดูว่าทำไปกี่ครั้งแล้ว ประมาณนี้นะครับ แต่ถ้า มันมีผลกับการเขียนโปรแกรม ก็จะเอาออกครับ

ส่วนเรื่องอัฟเดทราคา ในอนาคต ขอบคุณมากครับที่แนะนำ
5 @R11284
ตอบข้อ 1 ก่อนนะครับ เวลาน้อย
1 สร้าง query เพื่อคำนวนผลรวมของ Subform โดยมี ฟิลด์ที่ Link ระหว่าง MainForm กับ SubForm
เปิด query ในมุมอง SQL แล้วเอา code นี้ใส่เข้าไป
SELECT OrderDetail.OrderID, OrderDetail.Quantity, Product.ProPri, [Quantity]*[Product.ProPri] AS Cost
FROM Product INNER JOIN OrderDetail ON Product.ProID = OrderDetail.ProID
GROUP BY OrderDetail.OrderID, OrderDetail.Quantity, Product.ProPri, [Quantity]*[Product.ProPri];
save ชื่อ qTotalCost

2 ดึงค่าจาก query โดยใช้คำสั่ง DSum
2.1 เปิด SubForm (สมมุติชื่อเป็น frmOrderDetail) ขึ้นมาในมุมมองออกแบบ ที่ TextBox ของ OrderID เปลี่ยนชื่อเป็น txtOrderID
2.2 เพิ่ม TextBox เข้าไปที่ Form Footer ตั้งชื่อเป็น txtTotalCost
2.3 ที่ Control Source ของ txtTotalCost ใส่คำสั่ง
    =DSum("[Cost]","[qTotalCost]","[OrderID]=[txtOrderID]")
แล้วปิด subform ไปเลย

3 ที่ MainForm ดึงค่าจาก TextBox ของ SubForm
เปิด FormOrder ในมุมมองออกแบบ
3.1ใส่ TextBox ไปที Form Footer ของ FormOrder ตั้งชื่อว่า txtTotalSubCost
3.2 ที่ Control Source ใส่คำสั่ง
     =ชื่อsubform.Form!txtTotalCost
      =frmOrderDetail.Form!txtTotalCost
จบข้อ 1
รอฟังผลครับ
6 @R11288
ขอบคุณ คุณ ditasilk มากครับ

ตอนนี้ทำตามได้ผล ตามต้องการแล้วครับ
แต่ ตอนแรกตรง subform มันติด orderid มาด้วยครับ ผมเลยเลื่อนให้ไปอยู่ Form Footer ตรงที่ txtTotalCost อยู่ ครับ ใช้ได้เหมือนเดิมครับ

ขอบคุณครับ

รอคำตอบข้อ 2 ครับ...
7 @R11289


ใช่แบบนี้มั้ยครับ
8 @R11290
ประมาณนี้เลยครับ

ตอนนี้ผมออกแบบไว้ดังรูปครับ (คล้ายกันมาก)ครับ



ถ้าสามารถนำมาใส่ในแถบได้ ก็จะดีมากเลย
9 @R11292
ผมส่งไฟล์ saknoi.mdb ไปแกะ ก่อนนะครับ
หลักการเดือน ปี เหมือนกันครับ
ว่างๆ จะเข้ามาดู ว่า ติดปัญหาอะไร
10 @R11293
ขอบคุณครับ
11 @R11339
กลับมาแล้วครับ

ทำได้ตามตัวอย่างทั้งหมดแล้วครับ

ผมเอาผลรวมมาแสดงตรงฟอร์มแล้ว ถ้าไม่มีข้อมูล ตัวแสดงผล จะขึ้น error ครับ จะต้องไปแก้ไข ตรงไหนครับอยากให้ถ้าไม่มีข้อมูล ให้ขึ้น 0 ไว้ครับ

หาวิธีไม่เจอครับ รบกวนด้วยครับ



ขอบคุณครับ
12 @R11340
ลองประยุกต์ใช้คำสั่ง หรือฟังก์ชั่น ดู

NZ(ค่าผลรวม,0) หรือ

IIF(ISNULL(ค่าผลรวม),0,ค่าผลรวม)
13 @R11342
อ้างอิงจากซัปฟอร์ม
txttotal : =Sum([price])

=IIf(IsNull([sforderpro].[Form]![txttotal]),"0",[sforderpro].[Form]![txttotal])
=IIf(IsNull([sforderpro].[Form]![txttotal]),0,[sforderpro].[Form]![txttotal])

=NZ([sforderpro].[Form]![txttotal],"0")

=NZ([sforderpro].[Form]![txttotal],0)

อ้างอิงจาก text ที่สร้างมาใหม่
text ตัวเก่า ชื่อ total : =[sforderpro].[Form]![txttotal]

=IIf(IsNull([total]),"0",[total])
=IIf(IsNull([total]),0,[total])

=NZ([total],"0")

=NZ([total],0)

ผลออกมาเหมือนเดืมเลยครับ ถ้าไม่มีข้อมูลจะขึ้น error ได้มีข้อมูลก็จะโชวร์ปกติ ครับ
14 @R11343
ทำที่ footer ของ subform ที่อ้างอิงมาจาก query นะครับ
ถ้าคุณอ้างอิงจาก subform มันก็ error จาก footer ของ subform อยู่ดี

ลองอีกครั้งนะครับ
15 @R11344
ยังขึ้น error เหมือนเดิมเลยครับ

16 @R11345
ตรงfooter ของ subform ช่วยแสดง code DSUM()
ให้ดูด้วยครับ ปกติมันไม่ควรขึ้น error แม้ว่าจะไม่มีข้อมูลครับ
17 @R11346
ที่ footer ของ subform(sforderpro)
txtTotalCost : =DSum("[Cost]","[qTotalCost]","[OderID]=[txtOrderID]")

txtshow : =Nz([txtTotalCost],0)
     
เปลี่ยนเป็นตัวนี้ ขึ้น error เหมือนกัน: =IIf(IsNull([txtTotalCost]),0,[txtTotalCost])

form หลัก
Text77 : =[sforderpro].[Form]![txtshow]
18 @R11347
ถ้าฟอร์มหลัก เปลี่ยนเป็น
Text77 : =[sforderpro].[Form]![txtTotalCost]
มี error มั้ยครับ

ถ้ายังมีอยู่ ต้องไปดู qTotalCost หรือ ต้องส่งไฟล์เข้า webboard จะสะดวกกว่าครับ
19 @R11348
ส่งไฟล์เข้าเวปบอร์ดให้แล้วนะครับ ผมลองกับไฟล์ที่เคยส่งมาให้ก็เป็นเหมือนกันครับ เลยส่งไฟล์เดิมไปให้

รบกวนด้วยครับ

ขอบคุณครับ
20 @R11349
ต้องขอโทษ คุณ saknoi ตอนนี้ผมไม่สามารถทำงานได้ เนื่องจาก notebook ผมมีปัญหา หน้าจอหาย boot ไม่ขึ้น ขอซ่อมก่อนนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3580s