สอบถามอาจารย์ ทีครับ เกี่ยวกับ query
กระทู้เก่าบอร์ด อ.Yeadram

 1,292   6
URL.หัวข้อ / URL
สอบถามอาจารย์ ทีครับ เกี่ยวกับ query

ตอนนี้ จะทำรายงาน Stock ครับ แต่ติดปัญหาตรง query
คือ ต้องการนำ Unit Price ของวัสดุที่รับเข้ามา ให้มาแสดงเพื่อ คำนวน มูลค่าคงเหลือทั้งหมด โดย เอาจำนวน balance* Unit price
แต่ติด ตรง ดึง unit price มาแล้ว Query แสดงผล ผิดไป
ที่อยากได้คือ

-เอา ราคาต่อหน่วย ล่าสุด ของวัสดุนั้นๆ ที่รับเข้ามา มาแสดง (วัสดุที่รับเข้ามา ราคาไม่คงที่ และซื้อจากร้านค้าคนละร้าน ราคา ก็ คงต้องเปลี่ยน)

ตาราง และ ความสัมพัน ที่เกี่ยวข้อง


คิวรี่


ที่แสดง ผล เมื่อคิวรี่


รบกวนอาจารย์ด้วยครับ งาน ใกล้จะเสร็จแล้ว เหลือแค่ ส่วนรายงานครับ
ขอบคุณมากครับ

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

1 @R20554
เรียนอาจารย์ครับ
ที่ต้องการ ให้ เหลือ วัสดุ ละ 1 บรรทัด
แบบนี้ แต่อันนี้เลือก เอาค่า max เลยได้แบบที่ต้องการ

2 @R20555
แล้วใช้ Last แทน Max ไม่ได้หรือครับ

ก่อนอื่นอธิบายก่อน หลายคนเข้าใจความหมายของฟังก์ชั่น Last() ผิด แม้แต่เว็บฝรั่งที่ผมเคยอ่านยังเข้าใจผิดก็มี
Last คือ ข้อมูลเรคคอร์ดล่าสุดที่เรา Add ใหม่ขึ้นมาเท่านั้น โปรแกรมจะนับเรคคอร์ดอันที่ใหม่สุดเป็น Last
มีหลายกรณีที่ผมเคยอ่านเจอ
- พวกเค้านึกว่าการที่ Edit แก้เรคคอร์ดเดิมจะทำให้เป็น Last() แต่ไม่ใช่นะครับ เรคคอร์ดนั้นก็จะเป็นลำดับเดิมสำหรับ ฟังก์ชั่น Last()
- พวกเค้านึกว่าการแก้ ID ให้เป็นเลข มากสุดของข้อมูล ก็จะทำให้เป็น Last ซึ่งก็ไม่ใช่อีก เรคคอร์ดนั้นก็ยังเป็นเรคคอร์ดลำดับเดิม จะมีผลกับฟังก์ชั่น Max() ไม่ใช่ Last()
สรุปคือ Last() จะมีผลต่อเมื่อเป็นเรคคอร์ดใหม่เท่านั้น ในการแก้ไขข้อมูล ถ้าคุณอยากให้ Last() มีผล คือคุณต้องลบเรคคอร์ดนั้น แล้วเพิ่มเรคคอร์ดใหม่เท่านั้น

ถ้าเข้าใจหลักการของฟังก์ชั่น Last() ดีแล้ว มันก็น่าจะตอบโจทย์คุณได้นะครับ ลองดูครับ
3 @R20556
ลองแล้วครับ แต่ยังไม่ได้ครับ เพราะ ถ้า ทำการเบิกของออก ของ unit price เราไม่ได้ใส่ คือ unit price ใส่แต่ตอน รับวัสดุเข้า อ่ะครับ

แต่ถ้าใช้ last แต่ พอ มี เรคคอดใหม่ เราทำการเบิกของ ช่อง unit price จะไม่มีค่า ครับ
4 @R20557
โทษทีนะครับ ต้องขอบอกตรงๆว่า ผมจะไม่ดูโจทย์คำถามที่ต้องมาไล่วิเคราะห์ฐานข้อมูลว่าออกแบบยังไง ไม่ค่อยเก่งด้วย ประสบการณ์ออกแบบฐานข้อมูลผมก็ไม่ค่อยมาก ดูแล้วปวดหัวครับ งานผมก็ปวดหัวอยู่แล้ว ยังไงรออาจารย์ท่านอื่นแนะนำดูนะครับ
5 @R20558
หรือไม่ก็ลองสร้าง ซับคิวรี่ในคิวรี่ที่ทำ GROUP แบบนี้ดูครับ
- เขียนฟิลด์ใหม่ในคิวรี่

LastUnit: (SELECT Last(IM_Item_UnitPrice) FROM [ชื่อตาราง] AS a WHERE [ชื่อคิวรี่ที่ใช้อยู่].Item_Code = a.Item_Code AND Nz(a.IM_Item_Unit,0) <> 0)

กำหนดช่อง Total: Expression

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