กระทู้เก่าบอร์ด อ.Yeadram
2,933 4
URL.หัวข้อ /
URL
การทำรายงาน
พอดีทำรายงานแสดงรายชื่อนักศึกษาแต่ละวิชาโดยที่มี combobox ให้เลือกรหัสวิชาและแสดงรายละเอียดวิชาที่เลือกใน textbox โดยใช้เงื่อนไข dlookup แต่มีปัญหาว่าหากมีรหัสวิชาเหมือนกันมากกว่า 2 วิชา คำสั่งDlookup จะเลือกเฉพาะวิชาลำดับแรกมาแสดงทุกครั้งจะมีวิธีไหนบ้างที่จะสามารถแก้ปัญหานี้ได้ค่ะ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R03051
"รหัสวิชาเหมือนกันมากกว่า 2 วิชา" เขียนผิดหรือเปล่า ?
2 @R03061
ไม่ผิดค่ะ เช่นมีรหัสวิชา ACCT 100 ชื่อวิชาคือการบัญชีพื้นฐานและอีกรหัสหนึ่งคือ ACCT 100 ชื่อวิชาการบัญชีเบื้องต้น แต่ในตารางข้อมูลวิชาไม่ได้กำหนดฟิลด์รหัสวิชาเป็นคีย์หลักนะค่ะแต่มีฟิลด์รหัสสั้นเป็นฟิลด์หลักค่ะเพื่อให้ใช้เป็นรหัสอ้างอิงในข้อมูลตารางอื่นเพราะถ้าเรากำหนดฟิวด์รหัสวิชาเป็นฟิลด์หลักมันจะเกิดความสับสนเพราะในอนาคตอาจมีการตั้งรหัสวิชา ACCT 100 ขึ้นมาอีกโดยมีชื่อวิชาเป็นชื่ออื่นค่ะ
3 @R03062
ต้องไปใช้ Recordset แทนการหาค่าด้วยการใช้ DLookUp( ) โครงของการอ่านข้อมูลโดยใช้ Recordset ผ่าน DAO ก็คือ
Dim RS As DAO.Recordset
Dim SQL As String
SQL = "SELECT ฟิลด์ FROM เทเบิล WHERE เงื่อนไข ORDER BY ชื่อฟิลด์ที่ต้องการเรียงลำดับ"
Set RS = CurrentDb.OpenRecordset(SQL) ' สร้าง Recordset จาก SQL Statement
Do Until RS.EOF ' วนลูปจนกว่าจะอ่านหมดทุกเรคอร์ดใน Recordset แล้ว
... ตรงนี้จะเอาค่าของฟิลด์จาก Recordset RS ไปทำอะไรก็ว่าไป...
... โดยอ้างฟิลด์จากรูปแบบ RS!ชื่อฟิลด์ เช่น Me.Text1 = RS!CourseID
RS.MoveNext ' เลื่อนไปเรคอร์ดต่อไป
Loop
RS.Close: Set RS = Nothing ' ปิด Recordset
Dim RS As DAO.Recordset
Dim SQL As String
SQL = "SELECT ฟิลด์ FROM เทเบิล WHERE เงื่อนไข ORDER BY ชื่อฟิลด์ที่ต้องการเรียงลำดับ"
Set RS = CurrentDb.OpenRecordset(SQL) ' สร้าง Recordset จาก SQL Statement
Do Until RS.EOF ' วนลูปจนกว่าจะอ่านหมดทุกเรคอร์ดใน Recordset แล้ว
... ตรงนี้จะเอาค่าของฟิลด์จาก Recordset RS ไปทำอะไรก็ว่าไป...
... โดยอ้างฟิลด์จากรูปแบบ RS!ชื่อฟิลด์ เช่น Me.Text1 = RS!CourseID
RS.MoveNext ' เลื่อนไปเรคอร์ดต่อไป
Loop
RS.Close: Set RS = Nothing ' ปิด Recordset
4 @R03094
ผมเองก็เคยเจอ case นี้เวลาเขียนครับถ้าผมเป็นคุณผมจะแก้ไขโดยเอา"ชื่อวิชา"ขึ้นแสดงก่อน"รหัสวิชา" เพราะไม่น่าจะมีชื่อวิชาซ้ำกัน การค้นหาโดยใช้ List box หรือ Combo box จะเจอปัญหาอย่างนี้เสมอคือจะค้นหาให้แต่ระเบียนแรกก่อนเท่านั้นครับ ดังนั้นวิธีแก้ที่ดีที่สุดต้องกำหนด Key ที่ไม่ซ้ำกันช่วยให้ค้นง่ายขึ้นครับ
Time: 0.3421s