กระทู้เก่าบอร์ด อ.Yeadram
12,928 10
URL.หัวข้อ /
URL
แนะนำการเขียนโปรแกรมตัดเกรด
อยากคำนวณเลขคะแนนที่บันทึกไว้ เอามาคิดเ็ป็น เกรดเฉยๆ ครับ ไม่ทราบต้องใช้ฟังก์ชั่นไหน เคยใช้แต่ java ใช้ if else ขอบคุณล่วงหน้าครับ
10 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R03085
ที่ไม่เข้าใจคือต้องไปเขียนคำสั่งตรงไหนครับ ms access ครับ ทำตรงคิวรี่ได้หรือไม่ แนะนำอีกทีครับ ขอบพระคุณอย่างสูง
3 @R03090
เขียนในส่วนฟอร์มโดยเลือก properties แล้วเลือก Event ครับเป็นการดึง VB เข้ามาช่วยในการเขียนครับ
4 @R03095
ทำตรงคิวรี่ได้หรือไม่..
ในคิวรี่ หรือใน sql statement ก็สามารถใช้ if ได้ครับ
รูปแบบคือ iif(เงื่อนไข, เมื่อเป็นจริง, เมื่อเป็นเท็จ)
ตัวอย่างการเขียนผ่านนิพจน์
mGrade=iif([คะแนน]>=80,4,iif([คะแนน]>=70,3,2))
ตัวอย่างการเขียนโดย statement
select iif([คะแนน]>=80,4,iif([คะแนน]>=70,3,2)) as mGrade from table;
จากตัวอย่างเป็นการใช้ if ซ้อนกันสอง รอบ หรือ สอง วง เราสามารถใช้ if ซ้อนกันได้หลายวงได้ครับ (แต่ไม่น่าจะเกิน 7 วง ซึ่งเป็นข้อจำกัดของ access ครับ เอ หรือมากกว่า 7 ก็ไม่แน่ใจ)
ถ้ากรณีใช้ if ซ้อนกันมากจนโปรแกรมไม่ยอม ผมแนะนำว่าใช้สร้างเป็นตารางใหม่ แล้วเอามา คิวรี่ ประกอบกับ if ดีกว่าครับ
tbNew
point grade
80 4
70 3
60 2
50 1
0 0
ในคิวรี่ หรือใน sql statement ก็สามารถใช้ if ได้ครับ
รูปแบบคือ iif(เงื่อนไข, เมื่อเป็นจริง, เมื่อเป็นเท็จ)
ตัวอย่างการเขียนผ่านนิพจน์
mGrade=iif([คะแนน]>=80,4,iif([คะแนน]>=70,3,2))
ตัวอย่างการเขียนโดย statement
select iif([คะแนน]>=80,4,iif([คะแนน]>=70,3,2)) as mGrade from table;
จากตัวอย่างเป็นการใช้ if ซ้อนกันสอง รอบ หรือ สอง วง เราสามารถใช้ if ซ้อนกันได้หลายวงได้ครับ (แต่ไม่น่าจะเกิน 7 วง ซึ่งเป็นข้อจำกัดของ access ครับ เอ หรือมากกว่า 7 ก็ไม่แน่ใจ)
ถ้ากรณีใช้ if ซ้อนกันมากจนโปรแกรมไม่ยอม ผมแนะนำว่าใช้สร้างเป็นตารางใหม่ แล้วเอามา คิวรี่ ประกอบกับ if ดีกว่าครับ
tbNew
point grade
80 4
70 3
60 2
50 1
0 0
5 @R03182
จะลองดูนะครับ มึนจัง มีใครทำสำเร็จให้มั่งไม๊ครับ มือใหม่ access
ขอบคุณสำหรับคำตอบครับ
ขอบคุณสำหรับคำตอบครับ
6 @R03189
งงจัง ช่วยสร้างไฟล์ให้หน่อยไ้ด้ไม๊ครับ ใส่โค้ดให้นิดนึงเดี๋ยวผมเอามาศึกษาต่อ
7 @R03196
ตารางของคุณชื่ออะไร (เอาเป๊ะๆ)
มีฟิลด์อะไรบ้าง (เอาเป๊ะๆ อย่าสมมติ)
แต่ละฟิลด์เก็บเป็นชนิดข้อมูลแบบไหน
ถ้ามันเยอะมาก ก็ไม่ต้องเอามาทั้งหมด เอาแค่ที่สำคัญ
- ชื่อตาราง
- ฟิลด์หลัก (primary หรือ index ของตารางนี้)
- ฟิลด์คะแนน
ลองคิดตามช้าๆ ครับ ก่อนอื่นหาสิ่งที่ผมขอ มาให้ผมครับ ถ้าคุณหามาได้ เข้าใจความหมายของสิ่งที่ผมขอ แสดงว่าคุณเริ่มจะเข้าใจมันบ้างแล้ว
ลำดับต่อไปผมจะให้ sql กับคุณ คุณก็เอาไปลองทำ แล้วดูผล แล้วศึกษาจะได้เห็นภาพชัดเจนมากขึ้น อาจจะให้คุณร้อง อ๋อ เลยก็ได้ ถ้ามัวรอตัวอย่างของคนอื่นทั้งหมด คุณอาจเสียโอกาสในการเรียนรู้ว่า ชื่อออบเจค ชื่อฟิลด์ ชนิดข้อมูล ดัชนี คำเหล่านี้มันหมายถึงอะไรนะครับ
มีฟิลด์อะไรบ้าง (เอาเป๊ะๆ อย่าสมมติ)
แต่ละฟิลด์เก็บเป็นชนิดข้อมูลแบบไหน
ถ้ามันเยอะมาก ก็ไม่ต้องเอามาทั้งหมด เอาแค่ที่สำคัญ
- ชื่อตาราง
- ฟิลด์หลัก (primary หรือ index ของตารางนี้)
- ฟิลด์คะแนน
ลองคิดตามช้าๆ ครับ ก่อนอื่นหาสิ่งที่ผมขอ มาให้ผมครับ ถ้าคุณหามาได้ เข้าใจความหมายของสิ่งที่ผมขอ แสดงว่าคุณเริ่มจะเข้าใจมันบ้างแล้ว
ลำดับต่อไปผมจะให้ sql กับคุณ คุณก็เอาไปลองทำ แล้วดูผล แล้วศึกษาจะได้เห็นภาพชัดเจนมากขึ้น อาจจะให้คุณร้อง อ๋อ เลยก็ได้ ถ้ามัวรอตัวอย่างของคนอื่นทั้งหมด คุณอาจเสียโอกาสในการเรียนรู้ว่า ชื่อออบเจค ชื่อฟิลด์ ชนิดข้อมูล ดัชนี คำเหล่านี้มันหมายถึงอะไรนะครับ
8 @R03207
ทำไมโพสไม่ึขึ้น
9 @R03208
ตารางแรกเก็บ
stuid number P Key รหัส
stuname text ชื่อ
ตารางที่ 2 เก็บคะแนน
scoid number P Key
stuid number F key
score number เก็บคะแนน
grade number เก็บเกรด
ต้องการแค่ประมวลผล ฟิลล์ score ให้
0-49=0 50-54=1 55-59=1.5 60-64=2 65-69=2.5 70-74=3 75-79=3.5 80-100=4 ลงไปอยู่ช่องเกรดครับ
stuid number P Key รหัส
stuname text ชื่อ
ตารางที่ 2 เก็บคะแนน
scoid number P Key
stuid number F key
score number เก็บคะแนน
grade number เก็บเกรด
ต้องการแค่ประมวลผล ฟิลล์ score ให้
0-49=0 50-54=1 55-59=1.5 60-64=2 65-69=2.5 70-74=3 75-79=3.5 80-100=4 ลงไปอยู่ช่องเกรดครับ
10 @R03243
ลองใช้ switch ดูน่าจะได้
ในกรณีให้แสดงบนฟอร์ม
Private Sub score_AfterUpdate()
Me.grade = Switch([score] < 50, 0, [score] >= 50 And [score] < 55, 1, [score] >= 55 And [score] < 60, 1.5, [score] >= 60 And [score] < 65, 2, [score] >= 65 And [score] < 70, 2.5, [score] >= 70 And [score] < 75, 3, [score] >= 75 And [score] < 80, 3.5, [score] >= 80, 4, True, "")
End Sub
หากแสดงที่ Query
result : Switch([score] < 50, 0, [score] >= 50 And [score] < 55, 1, [score] >= 55 And [score] < 60, 1.5, [score] >= 60 And [score] < 65, 2, [score] >= 65 And [score] < 70, 2.5, [score] >= 70 And [score] < 75, 3, [score] >= 75 And [score] < 80, 3.5, [score] >= 80, 4, True, "")
วิธีการใช้ เลือกตามใจชอบลองนำไปประยุกต์ใช้ดูตามความเหมาะสม
ในกรณีให้แสดงบนฟอร์ม
Private Sub score_AfterUpdate()
Me.grade = Switch([score] < 50, 0, [score] >= 50 And [score] < 55, 1, [score] >= 55 And [score] < 60, 1.5, [score] >= 60 And [score] < 65, 2, [score] >= 65 And [score] < 70, 2.5, [score] >= 70 And [score] < 75, 3, [score] >= 75 And [score] < 80, 3.5, [score] >= 80, 4, True, "")
End Sub
หากแสดงที่ Query
result : Switch([score] < 50, 0, [score] >= 50 And [score] < 55, 1, [score] >= 55 And [score] < 60, 1.5, [score] >= 60 And [score] < 65, 2, [score] >= 65 And [score] < 70, 2.5, [score] >= 70 And [score] < 75, 3, [score] >= 75 And [score] < 80, 3.5, [score] >= 80, 4, True, "")
วิธีการใช้ เลือกตามใจชอบลองนำไปประยุกต์ใช้ดูตามความเหมาะสม
Time: 0.3479s
if คะแนน = เงื่อนไข then
แสดงเกรด
ElseIf คะแนน = เงื่อนไข then
แสดงเกรด
Else
แสดงเกรด
End If