กระทู้เก่าบอร์ด อ.Yeadram
886 7
URL.หัวข้อ /
URL
ขอคำแนะนำ เกี่ยวกับเรื่อง Count ค่ะ
ขอความกรุณาจากอาจารย์แล้วพี่ๆทุกทั่านด้วยนะคะ
พอดีติดเรื่องเคาท์ผลตรวจค่ะ
มีรายการตรวต 5 รายการ
รายการตรวจ ผลตรวจ
1 ปกติ
2 ปกติ
3 ปกติ
4 ปกติ
5 ปกติ
สรุปผลเป็น ผ่าน
รายการตรวจ ผลตรวจ
1 ปกติ
2 ผิดปกติ
3 ปกติ
4 ปกติ
5 ปกติ
สรุปผลเป็น ไม่ผ่าน
รายการตรวจ ผลตรวจ
1 ปกติ
2 ปกติ
3 ปกติ
4 รอผลยืนยัน
5 ปกติ
สรุปผลเป็น ผ่าน แต่รอผลยืนยัน
พอดีติดเรื่องเคาท์ผลตรวจค่ะ
มีรายการตรวต 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
2 @R24132
ไม่ผ่านค่ะ
3 @R24133
ผมลองเสนอดูเล่นๆ นะครับ พูดถึงถ้าสมมุติกำหนดค่าว่า ถ้าผลตรวจ คือปกติ ให้มีค่า = 0, ถ้าผลตรวจ คือรอผลยืนยัน ให้มีค่า = 1, ถ้าผลตรวจ คือไม่ผ่าน ให้มีค่า = 6
จากนั้นเราก็ทำคิวรี่ให้คำนวนคะแนนผลรวมของผลตรวจ โดยทำสรุปไว้ 3 กรณี คือ
1. ถ้าคะแนนผลรวม = 0 ให้สรุปผลว่า ปกติ
2. ถ้าคะแนนผลรวมอยู่ระหว่าง 1 ถึง 5 ให้สรุปผลว่า รอยืนยัน
3. ถ้าคะแนนผลรวม > 5 ให้สรุปผลว่า ผิดปกติ
จากนั้นเราก็ทำคิวรี่ให้คำนวนคะแนนผลรวมของผลตรวจ โดยทำสรุปไว้ 3 กรณี คือ
1. ถ้าคะแนนผลรวม = 0 ให้สรุปผลว่า ปกติ
2. ถ้าคะแนนผลรวมอยู่ระหว่าง 1 ถึง 5 ให้สรุปผลว่า รอยืนยัน
3. ถ้าคะแนนผลรวม > 5 ให้สรุปผลว่า ผิดปกติ
4 @R24134
ใช่ฟั่งชั่นอะไรค่ะ ในการคำนวน
5 @R24137
กรณีนี้น่าจะต้องเขียน VBA ครับ โดยกำหนดเงื่อนไขว่า
1. ถ้าพบรายการ "ผิดปกติ" แม้เพียง 1 รายการ ก็ให้ผลว่า "ไม่ผ่าน"
2. ถ้าพบรายการ "รอผลการยืนยัน" แสดงว่ายังตรวจไม่ครบ หรือตรวจซ้ำ ก็ให้ผลว่า "รอผลการยืนยัน"
3. ถ้าทุกรายการ "ปกติ" ก็ถือว่าผ่าน
ซึ่งสามารถเขียนโค้ดได้หลายแบบครับ
แบบที่คุณสมชายบอกก็ทำได้
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,"ผิดปกติ")))
เช่น คิวรี่ที่คุณจะสร้างขึ้นมาก่อนนี้ อาจจะดึงข้อมูลมาจาก 2 ตารางที่เชื่อมโยงกันอยู่ โดยอาจจะเลือกฟิวด์ รหัสประจำตัวคนไข้, ชื่อ, นามสกุลคนไข้ (จากตารางประวัติคนไข้)
และเลือกฟิวด์ รายการตรวจ, ผลตรวจ (จากตารางข้อมูลการตรวจ)
พอเลือกฟิวด์ดังกล่าวได้แล้ว ก็คลิกที่คำสั่ง Group By
จากนั้น ที่ฟิวด์รายการตรวจให้เปลี่ยนเป็น GroupByCount (ซึ่งจะได้จำนวนรายการที่ตรวจว่ามีกี่รายการ)
และที่ฟิวด์ผลตรวจ ให้ GroupBySum (ซึ่งจะได้ผลลัพธ์เป็นคะแนนรวม ตามแนวคิดที่คุณสมชายได้เสนอไว้)
จากนั้นเขียนฟิวด์ขึ้นมาเองที่คิวรี่อีกฟิวด์หนึ่งเพื่อแปลงค่าผลรวมคะแนนให้เป็นผลลัพธ์ที่เป็นคำพูดตามที่เราต้องการ เช่น
สรุปผลตรวจ : IIf([ผลรวมคะแนน]=0,"ปกติ", IIf([ผลรวมคะแนน] Between 1 and 5, "รอยืนยัน", IIf([ผลรวมคะแนน]>5,"ผิดปกติ")))
Time: 0.3720s
รายการตรวจ ผลตรวจ
1 ปกติ
2 ปกติ
3 ไม่ผ่าน
4 รอผลยืนยัน
5 ปกติ
สรุปผลจะเป็นคำว่าอะไร