ขอคำแนะนำ เกี่ยวกับเรื่อง Count ค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 693   7
URL.หัวข้อ / URL
ขอคำแนะนำ เกี่ยวกับเรื่อง Count ค่ะ

ขอความกรุณาจากอาจารย์แล้วพี่ๆทุกทั่านด้วยนะคะ
พอดีติดเรื่องเคาท์ผลตรวจค่ะ
มีรายการตรวต 5 รายการ
รายการตรวจ ผลตรวจ
1                   ปกติ
2                   ปกติ
3                   ปกติ
4                   ปกติ
5                   ปกติ
สรุปผลเป็น ผ่าน

รายการตรวจ ผลตรวจ
1                   ปกติ
2                   ผิดปกติ
3                   ปกติ
4                   ปกติ
5                   ปกติ
สรุปผลเป็น ไม่ผ่าน

รายการตรวจ ผลตรวจ
1                   ปกติ
2                   ปกติ
3                   ปกติ
4                   รอผลยืนยัน
5                   ปกติ
สรุปผลเป็น ผ่าน แต่รอผลยืนยัน

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

1 @R24131
แล้วถ้า

รายการตรวจ ผลตรวจ
1                   ปกติ
2                   ปกติ
3                   ไม่ผ่าน
4                   รอผลยืนยัน
5                   ปกติ

สรุปผลจะเป็นคำว่าอะไร

2 @R24132
ไม่ผ่านค่ะ
3 @R24133
ผมลองเสนอดูเล่นๆ นะครับ พูดถึงถ้าสมมุติกำหนดค่าว่า ถ้าผลตรวจ คือปกติ ให้มีค่า = 0, ถ้าผลตรวจ คือรอผลยืนยัน ให้มีค่า = 1, ถ้าผลตรวจ คือไม่ผ่าน ให้มีค่า = 6
จากนั้นเราก็ทำคิวรี่ให้คำนวนคะแนนผลรวมของผลตรวจ โดยทำสรุปไว้ 3 กรณี คือ
1. ถ้าคะแนนผลรวม = 0 ให้สรุปผลว่า ปกติ
2. ถ้าคะแนนผลรวมอยู่ระหว่าง 1 ถึง 5 ให้สรุปผลว่า รอยืนยัน
3. ถ้าคะแนนผลรวม > 5 ให้สรุปผลว่า ผิดปกติ
4 @R24134
ใช่ฟั่งชั่นอะไรค่ะ ในการคำนวน
5 @R24137
กรณีนี้น่าจะต้องเขียน VBA ครับ โดยกำหนดเงื่อนไขว่า

1. ถ้าพบรายการ "ผิดปกติ" แม้เพียง 1 รายการ ก็ให้ผลว่า "ไม่ผ่าน"
2. ถ้าพบรายการ "รอผลการยืนยัน" แสดงว่ายังตรวจไม่ครบ หรือตรวจซ้ำ ก็ให้ผลว่า "รอผลการยืนยัน"
3. ถ้าทุกรายการ "ปกติ" ก็ถือว่าผ่าน

ซึ่งสามารถเขียนโค้ดได้หลายแบบครับ
แบบที่คุณสมชายบอกก็ทำได้
6 @R24138
if dcount("*","ชื่อเทเบิล","ชื่อฟิลด์ผลตรวจ = ค่าของไม่ผ่าน") > 0 then
   ' สรุปผล คือ ไม่ผ่าน ก็ให้ใส่โค้ดที่ต้องการทำอะไรต่อไปที่จุดนี้
elseif dcount("*","ชื่อเทเบิล","ชื่อฟิลด์ผลตรวจ = ค่าของรอผลยืนยัน") > 0 then
   ' สรุปผล คือ รอผลยืนยัน ก็ให้ใส่โค้ดที่ต้องการทำอะไรต่อไปที่จุดนี้
else
   ' สรุปผล คือ ผ่าน ก็ให้ใส่โค้ดที่ต้องการทำอะไรต่อไปที่จุดนี้
end if


แต่ในความเป็นจริง ในส่วนของเงื่อนไขด้านหลังที่เขียนว่า

"ชื่อฟิลด์ผลตรวจ = ค่าของ... "

มันควรมีการกำหนดด้วยว่าเป็นของใครด้วยเป็นอย่างน้อย เป็น

"ชื่อฟิลด์ผลตรวจ = ค่าของไม่ผ่าน... and ชื่อฟิลด์ของบุคคล = 'รหัสบุคคล'"

แต่คุณไม่บอกอะไรมา ก็ให้โค้ดเท่าที่มีรายละเอียดครับ

ปล. งานเรียน หรืองานอะไรครับนี่
7 @R24139
สมมุติว่าถ้าทำตามแนวคิดของคุณสมชาย ก่อนอื่นผมขอเดาลัษณะฐานข้อมูลที่คุณออกแบบไว้ก่อนว่า น่าจะต้องมีตารางข้อมูลประวัติคนไข้ (One) และข้อมูลการตรวจ (Many) อยู่ ซึ่งข้อมูลการตรวจสมมุติว่ามีอยู่ 5 รายการ ดังนั้น เวลาที่คุณจะสรุปผลการตรวจของคนไข้แต่ละคนออกมา คุณอาจทำคิวรี่ให้ได้ผลลัพธ์ตามที่ต้องการออกกมาก่อน แล้วค่อยนำคิวรี่นี้ไปทำเป็น Report ต่อไป

เช่น คิวรี่ที่คุณจะสร้างขึ้นมาก่อนนี้ อาจจะดึงข้อมูลมาจาก 2 ตารางที่เชื่อมโยงกันอยู่ โดยอาจจะเลือกฟิวด์ รหัสประจำตัวคนไข้, ชื่อ, นามสกุลคนไข้ (จากตารางประวัติคนไข้)

และเลือกฟิวด์ รายการตรวจ, ผลตรวจ (จากตารางข้อมูลการตรวจ)

พอเลือกฟิวด์ดังกล่าวได้แล้ว ก็คลิกที่คำสั่ง Group By
จากนั้น ที่ฟิวด์รายการตรวจให้เปลี่ยนเป็น GroupByCount (ซึ่งจะได้จำนวนรายการที่ตรวจว่ามีกี่รายการ)
และที่ฟิวด์ผลตรวจ ให้ GroupBySum (ซึ่งจะได้ผลลัพธ์เป็นคะแนนรวม ตามแนวคิดที่คุณสมชายได้เสนอไว้)
จากนั้นเขียนฟิวด์ขึ้นมาเองที่คิวรี่อีกฟิวด์หนึ่งเพื่อแปลงค่าผลรวมคะแนนให้เป็นผลลัพธ์ที่เป็นคำพูดตามที่เราต้องการ เช่น
สรุปผลตรวจ : IIf([ผลรวมคะแนน]=0,"ปกติ", IIf([ผลรวมคะแนน] Between 1 and 5, "รอยืนยัน", IIf([ผลรวมคะแนน]>5,"ผิดปกติ")))
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2610s