การทำรายงาน
กระทู้เก่าบอร์ด อ.Yeadram

 2,870   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
4 @R03094
ผมเองก็เคยเจอ case นี้เวลาเขียนครับถ้าผมเป็นคุณผมจะแก้ไขโดยเอา"ชื่อวิชา"ขึ้นแสดงก่อน"รหัสวิชา" เพราะไม่น่าจะมีชื่อวิชาซ้ำกัน การค้นหาโดยใช้ List box หรือ Combo box จะเจอปัญหาอย่างนี้เสมอคือจะค้นหาให้แต่ระเบียนแรกก่อนเท่านั้นครับ ดังนั้นวิธีแก้ที่ดีที่สุดต้องกำหนด Key ที่ไม่ซ้ำกันช่วยให้ค้นง่ายขึ้นครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2375s