ปัญหาการคำนวณในรายงาน
กระทู้เก่าบอร์ด อ.Yeadram

 1,495   9
URL.หัวข้อ / URL
ปัญหาการคำนวณในรายงาน

ตอนนี้ดิฉันจะสร้างรายงานที่มีการคำนวณในรายงาน คือ ดิฉันรายงานหนึ่งขึ้นมาชื่อ
ยอดหมึกคงเหลือ โดยในคิวรี่จะกำหนดดังนี้

รหัสหมึก-----ดึงมาจากตารางหมึก
ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์--------ดึงมาจากตารางหมึก
Sum Of จำนวน------ดึงมาจากคิวรี่หมึกที่ถูกใช้งาน
จำนวน--------ดึงมาจากตารางหมึก
เหลือทั้งหมด: ([จำนวน]-[Sum Of จำนวน])-------เป็นการสร้างนิพจน์ให้คำนวณยอดคงเหลือ
..........................แต่.........................
เมื่อเพิ่มหมึกตัวใหม่เข้ามาหากยังไม่มีการเบิกมันจะไม่ขึ้นในรายงานให้ ผลมันออกมาประมาณนี้


สิ่งที่ต้องการคืออยากให้เมื่อเพิ่มหมึกตัวใหม่เข้า ก็จะขึ้นในลักษณะประมาณนี้อะค่ะ

รหัสหมึก        ยี่ห้อ           จำนวน Sum(ยอดเบิก)       จำนวนทั้งหมด        คงเหลือ
TN315          HP540               0                                        5                        5

ช่วยแนะนำหน่อยจะค่ะว่าจะทำยังไงให้หมึดที่เพิ่มมาใหม่แต่ยังไม่มีผู้ใช้เบิกไปมันขึ้นในรายงาน

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

1 @R14713
ใน query ที่ใช้สร้างรายงาน
เปลี่ยน ตารางหมึก Inner Join คิวรี่หมึกที่ถูกใช้งาน
เป็น ตารางหมึก Left Join คิวรี่หมึกที่ถูกใช้งาน

เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน)
2 @R14714
.............ส่วนนี้เปลี่ยนเรียบร้อยแล้วค่ะ...............
เปลี่ยน ตารางหมึก Inner Join คิวรี่หมึกที่ถูกใช้งาน
เป็น ตารางหมึก Left Join คิวรี่หมึกที่ถูกใช้งาน

..............แต่ส่วนนี้..................
เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน)

ไปเปลี่ยนตรงไหนค่ะ คิวรี่ยอดคงเหลือ หรือว่า คิวรี่หมึกที่ถูกใช้งาน ลองปรับเปลี่ยนทั้งสองคิวรี่นี้แล้วมัน ไม่ขึ้นยอดคงเหลือในหมึกที่เพิ่มใหม่อะค่ะ ผลจากที่ลองปรับเป็นแบบนี้


3 @R14715
ขอโทษครับ ตามนี้ครับ

เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน,0)

น่าจะทำทั้ง 2 Query เลย
4 @R14716
เปลี่ยนแบบนี้แล้ว ทั้ง 2Query แต่มันยังไม่ได้อะค่ะ


รบกวนดูให้หน่อยนะค่ะใส่อะไรตรงไหนผิดไปหรือป่าว
5 @R14718
Query จำนวนหมืกที่ใช้ไปผิดครับ
copy SQL statement ของ Query นั้นมาให้ดูดีกว่าครับ
6 @R14720
อาจารย์หมายถึงอันนี้หรือป่าวค่ะ

SELECT [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], [จำนวนหมึกที่ถูกใช้งานไป].[ยอดรวมหมึกที่ถูกเบิก], [รายการหมึกทั้งหมด].[จำนวน], ([จำนวน]-[ยอดรวมหมึกที่ถูกเบิก]) AS เหลือทั้งหมด
FROM รายการหมึกทั้งหมด LEFT JOIN จำนวนหมึกที่ถูกใช้งานไป ON [รายการหมึกทั้งหมด].[รหัสหมึก] = [จำนวนหมึกที่ถูกใช้งานไป].[รหัสหมึก]
GROUP BY [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], [จำนวนหมึกที่ถูกใช้งานไป].[ยอดรวมหมึกที่ถูกเบิก], [รายการหมึกทั้งหมด].[จำนวน];

7 @R14721
SQL ของ Query จำนวนหมึกที่ใช้
SELECT [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], Sum([ตารางการใช้งาน].[จำนวน]) AS ยอดรวมหมึกที่ถูกเบิก
FROM รายการหมึกทั้งหมด LEFT JOIN ตารางการใช้งาน ON [รายการหมึกทั้งหมด].[รหัสหมึก] = [ตารางการใช้งาน].[รหัสหมึก]
GROUP BY [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์];
8 @R14724
SQL ทีส่งมาไม่ยักจะเหมือนในรูปก่อนหน้า ชื่อ Query ที่ให้มาก็ไม่ตรงกัน
ผมยึดตามล่าสุดที่ส่งมาแล้วกัน

Query จำนวนหมึกที่ใช้:
SELECT [รหัสหมึก], Sum([จำนวน]) AS ยอดรวมหมึกที่ถูกเบิก
FROM ตารางการใช้งาน
GROUP BY [รหัสหมึก]

Query สุดท้ายที่ใช้ในรายงานแก้เป็น
SELECT a.[รหัสหมึก], [ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์]
, NZ([ยอดรวมหมึกที่ถูกเบิก],0) As ยอดเบิก
, [จำนวน]
, ([จำนวน] - NZ([ยอดรวมหมึกที่ถูกเบิก],0) ) AS เหลือทั้งหมด
FROM รายการหมึกทั้งหมด As a
LEFT JOIN จำนวนหมึกที่ใช้ As b
ON a.[รหัสหมึก] = b.[รหัสหมึก]
GROUP BY a.[รหัสหมึก], [ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], [จำนวน]

ปล. มีนกับชื่อตารางและ field ควรตั้งให้ดูง่ายกว่านี้ครับ
9 @R14727
ใช้ค่ะ.. แหม่มเปลี่ยนใหม่นิสหน่อย
ตอนนี้แก้ไข Query ยอดคงเหลือได้แล้ว ข้อมูลแสดงแบบที่ต้องการเรียบร้อยแล้วค่ะ

แต่ในส่วน Query จำนวนหมึกที่ใช้ ยังแก้ไขไม่ได้ เดี๋ยวจะลองพยายามปรับเปลี่ยนดูเรื่อย

ยังไงก็ขอบคุณอาจารย์สำหรับคำแนะนำนะค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3450s