กระทู้เก่าบอร์ด อ.Yeadram
1,495 9
URL.หัวข้อ /
URL
ปัญหาการคำนวณในรายงาน
ตอนนี้ดิฉันจะสร้างรายงานที่มีการคำนวณในรายงาน คือ ดิฉันรายงานหนึ่งขึ้นมาชื่อ
ยอดหมึกคงเหลือ โดยในคิวรี่จะกำหนดดังนี้
รหัสหมึก-----ดึงมาจากตารางหมึก
ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์--------ดึงมาจากตารางหมึก
Sum Of จำนวน------ดึงมาจากคิวรี่หมึกที่ถูกใช้งาน
จำนวน--------ดึงมาจากตารางหมึก
เหลือทั้งหมด: ([จำนวน]-[Sum Of จำนวน])-------เป็นการสร้างนิพจน์ให้คำนวณยอดคงเหลือ
..........................แต่.........................
เมื่อเพิ่มหมึกตัวใหม่เข้ามาหากยังไม่มีการเบิกมันจะไม่ขึ้นในรายงานให้ ผลมันออกมาประมาณนี้
สิ่งที่ต้องการคืออยากให้เมื่อเพิ่มหมึกตัวใหม่เข้า ก็จะขึ้นในลักษณะประมาณนี้อะค่ะ
รหัสหมึก ยี่ห้อ จำนวน Sum(ยอดเบิก) จำนวนทั้งหมด คงเหลือ
TN315 HP540 0 5 5
ช่วยแนะนำหน่อยจะค่ะว่าจะทำยังไงให้หมึดที่เพิ่มมาใหม่แต่ยังไม่มีผู้ใช้เบิกไปมันขึ้นในรายงาน
ยอดหมึกคงเหลือ โดยในคิวรี่จะกำหนดดังนี้
รหัสหมึก-----ดึงมาจากตารางหมึก
ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์--------ดึงมาจากตารางหมึก
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
2 @R14714
.............ส่วนนี้เปลี่ยนเรียบร้อยแล้วค่ะ...............
เปลี่ยน ตารางหมึก Inner Join คิวรี่หมึกที่ถูกใช้งาน
เป็น ตารางหมึก Left Join คิวรี่หมึกที่ถูกใช้งาน
..............แต่ส่วนนี้..................
เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน)
ไปเปลี่ยนตรงไหนค่ะ คิวรี่ยอดคงเหลือ หรือว่า คิวรี่หมึกที่ถูกใช้งาน ลองปรับเปลี่ยนทั้งสองคิวรี่นี้แล้วมัน ไม่ขึ้นยอดคงเหลือในหมึกที่เพิ่มใหม่อะค่ะ ผลจากที่ลองปรับเป็นแบบนี้
เปลี่ยน ตารางหมึก Inner Join คิวรี่หมึกที่ถูกใช้งาน
เป็น ตารางหมึก Left Join คิวรี่หมึกที่ถูกใช้งาน
..............แต่ส่วนนี้..................
เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน)
ไปเปลี่ยนตรงไหนค่ะ คิวรี่ยอดคงเหลือ หรือว่า คิวรี่หมึกที่ถูกใช้งาน ลองปรับเปลี่ยนทั้งสองคิวรี่นี้แล้วมัน ไม่ขึ้นยอดคงเหลือในหมึกที่เพิ่มใหม่อะค่ะ ผลจากที่ลองปรับเป็นแบบนี้
3 @R14715
ขอโทษครับ ตามนี้ครับ
เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน,0)
น่าจะทำทั้ง 2 Query เลย
เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน,0)
น่าจะทำทั้ง 2 Query เลย
4 @R14716
เปลี่ยนแบบนี้แล้ว ทั้ง 2Query แต่มันยังไม่ได้อะค่ะ
รบกวนดูให้หน่อยนะค่ะใส่อะไรตรงไหนผิดไปหรือป่าว
รบกวนดูให้หน่อยนะค่ะใส่อะไรตรงไหนผิดไปหรือป่าว
5 @R14718
Query จำนวนหมืกที่ใช้ไปผิดครับ
copy SQL statement ของ Query นั้นมาให้ดูดีกว่าครับ
copy SQL statement ของ Query นั้นมาให้ดูดีกว่าครับ
6 @R14720
อาจารย์หมายถึงอันนี้หรือป่าวค่ะ
SELECT [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], [จำนวนหมึกที่ถูกใช้งานไป].[ยอดรวมหมึกที่ถูกเบิก], [รายการหมึกทั้งหมด].[จำนวน], ([จำนวน]-[ยอดรวมหมึกที่ถูกเบิก]) AS เหลือทั้งหมด
FROM รายการหมึกทั้งหมด LEFT JOIN จำนวนหมึกที่ถูกใช้งานไป ON [รายการหมึกทั้งหมด].[รหัสหมึก] = [จำนวนหมึกที่ถูกใช้งานไป].[รหัสหมึก]
GROUP BY [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], [จำนวนหมึกที่ถูกใช้งานไป].[ยอดรวมหมึกที่ถูกเบิก], [รายการหมึกทั้งหมด].[จำนวน];
SELECT [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], [จำนวนหมึกที่ถูกใช้งานไป].[ยอดรวมหมึกที่ถูกเบิก], [รายการหมึกทั้งหมด].[จำนวน], ([จำนวน]-[ยอดรวมหมึกที่ถูกเบิก]) AS เหลือทั้งหมด
FROM รายการหมึกทั้งหมด LEFT JOIN จำนวนหมึกที่ถูกใช้งานไป ON [รายการหมึกทั้งหมด].[รหัสหมึก] = [จำนวนหมึกที่ถูกใช้งานไป].[รหัสหมึก]
GROUP BY [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], [จำนวนหมึกที่ถูกใช้งานไป].[ยอดรวมหมึกที่ถูกเบิก], [รายการหมึกทั้งหมด].[จำนวน];
7 @R14721
SQL ของ Query จำนวนหมึกที่ใช้
SELECT [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์], Sum([ตารางการใช้งาน].[จำนวน]) AS ยอดรวมหมึกที่ถูกเบิก
FROM รายการหมึกทั้งหมด LEFT JOIN ตารางการใช้งาน ON [รายการหมึกทั้งหมด].[รหัสหมึก] = [ตารางการใช้งาน].[รหัสหมึก]
GROUP BY [รายการหมึกทั้งหมด].[รหัสหมึก], [รายการหมึกทั้งหมด].[ยี่ห้อ/รุ่นเครื่องเครื่องพิมพ์];
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 ควรตั้งให้ดูง่ายกว่านี้ครับ
ผมยึดตามล่าสุดที่ส่งมาแล้วกัน
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 จำนวนหมึกที่ใช้ ยังแก้ไขไม่ได้ เดี๋ยวจะลองพยายามปรับเปลี่ยนดูเรื่อย
ยังไงก็ขอบคุณอาจารย์สำหรับคำแนะนำนะค่ะ
ตอนนี้แก้ไข Query ยอดคงเหลือได้แล้ว ข้อมูลแสดงแบบที่ต้องการเรียบร้อยแล้วค่ะ
แต่ในส่วน Query จำนวนหมึกที่ใช้ ยังแก้ไขไม่ได้ เดี๋ยวจะลองพยายามปรับเปลี่ยนดูเรื่อย
ยังไงก็ขอบคุณอาจารย์สำหรับคำแนะนำนะค่ะ
Time: 0.3450s
เปลี่ยน ตารางหมึก Inner Join คิวรี่หมึกที่ถูกใช้งาน
เป็น ตารางหมึก Left Join คิวรี่หมึกที่ถูกใช้งาน
เปลี่ยน Sum Of จำนวน
เป็น NZ(Sum Of จำนวน)