กระทู้เก่าบอร์ด อ.Yeadram
1,170 7
URL.หัวข้อ /
URL
ต้องการทราบวิธีการค้นหาหลายฟิลด์
ผมต้องการเขียนโค๊ดค้นหาข้อมูลในฟิลด์ adviser_1 ถ้าไม่พบ ให้ไปค้นในฟิลด์ adviser_2 ถ้าไม่พบให้ไปค้นใน adviser_3
คำสั่งผมทำด้านล่าง ไม่ได้ผลครับ ต้องแก้ไขอย่างไรครับ อาตารย์ทุกท่าน
Private Sub search_Click()
DoCmd.GoToControl "adviser_1"
DoCmd.GoToControl "adviser_2"
DoCmd.GoToControl "adviser_3"
DoCmd.FindRecord Forms![frm_room_number]!Text65, acAnywhere, False, acSearchAll, , acCurrent, True
End Sub
คำสั่งผมทำด้านล่าง ไม่ได้ผลครับ ต้องแก้ไขอย่างไรครับ อาตารย์ทุกท่าน
Private Sub search_Click()
DoCmd.GoToControl "adviser_1"
DoCmd.GoToControl "adviser_2"
DoCmd.GoToControl "adviser_3"
DoCmd.FindRecord Forms![frm_room_number]!Text65, acAnywhere, False, acSearchAll, , acCurrent, True
End Sub
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R22073
Code ล่าสุด เป็นคำตอบที่ไม่ตรงกับคำถามนะครับ
คำถามคือ ถ้าไม่พบใน adviser_1 ค่อยไปหาใน adviser_2, ...
แต่ code เป็นการค้นหาใน adviser_1, 2 และ 3 พร้อมๆ กัน
หรือว่าต้องการแบบนี้ครับ
คำถามคือ ถ้าไม่พบใน adviser_1 ค่อยไปหาใน adviser_2, ...
แต่ code เป็นการค้นหาใน adviser_1, 2 และ 3 พร้อมๆ กัน
หรือว่าต้องการแบบนี้ครับ
3 @R22075
ผมลอง ค้นคำถามในนี้ครับ เลยลองปรับใช้ ก็ใช้ได้ครับ แต่จริงๆแล้ว อยากได้ Code ที่ตรงกับคำถามแหละครับอาจารย์ ไม่ทราบว่า จะเขียน Code อย่างไรครับ อาจารย์ PichaiTC
เพราะผมใช้แล้ว ปรากฏว่ามันกรองเอาเฉพาะข้อมูลที่ค้นหาตรงกัน ข้อมูลอื่นๆในฟอร์มที่ไม่ตรงกัน จะไม่เห็นเลย ต้องปิด-เปิดฟอร์มใหม่ เวลาจะค้นหาต่อไป งั้นต้องขอรบกวนอาจารย์เขียน Code ตามคำถามแรกน๊ะครับ
เพราะผมใช้แล้ว ปรากฏว่ามันกรองเอาเฉพาะข้อมูลที่ค้นหาตรงกัน ข้อมูลอื่นๆในฟอร์มที่ไม่ตรงกัน จะไม่เห็นเลย ต้องปิด-เปิดฟอร์มใหม่ เวลาจะค้นหาต่อไป งั้นต้องขอรบกวนอาจารย์เขียน Code ตามคำถามแรกน๊ะครับ
4 @R22092
แบบเข้าใจง่าย ๆ ก็ประมาณนี้ครับ
แต่ผมไม่เข้าใจที่คุณว่า
"ปรากฏว่ามันกรองเอาเฉพาะข้อมูลที่ค้นหาตรงกัน ข้อมูลอื่นๆในฟอร์มที่ไม่ตรงกัน จะไม่เห็นเลย"
ส่วน ที่ต้อง เปิด-ปิดฟอร์มทุกครััง
ลองเพิ่มคำสั่งนี้ครับ Me.Requery
Private Sub search_Click()
Dim strsearch As String
Dim Task As String
strsearch = Me.txtSearch.Value
If DCount("1", "Adviser", adviser_1 Like "" * " & strsearch & " * "") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_1 Like ""*" & strsearch & "*"
Else
If DCount("1", "Adviser", adviser_2 Like "" * " & strsearch & " * "") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_2 Like ""*" & strsearch & "*"
Else
If DCount("1", "Adviser", adviser_3 Like "" * " & strsearch & " * "") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_3 Like ""*" & strsearch & "*"
End If
End If
End If
Me.RecordSource = Task
Me.Requery
Me.txtSearch.SetFocus
End Sub
แต่ผมไม่เข้าใจที่คุณว่า
"ปรากฏว่ามันกรองเอาเฉพาะข้อมูลที่ค้นหาตรงกัน ข้อมูลอื่นๆในฟอร์มที่ไม่ตรงกัน จะไม่เห็นเลย"
ส่วน ที่ต้อง เปิด-ปิดฟอร์มทุกครััง
ลองเพิ่มคำสั่งนี้ครับ Me.Requery
Private Sub search_Click()
Dim strsearch As String
Dim Task As String
strsearch = Me.txtSearch.Value
If DCount("1", "Adviser", adviser_1 Like "" * " & strsearch & " * "") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_1 Like ""*" & strsearch & "*"
Else
If DCount("1", "Adviser", adviser_2 Like "" * " & strsearch & " * "") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_2 Like ""*" & strsearch & "*"
Else
If DCount("1", "Adviser", adviser_3 Like "" * " & strsearch & " * "") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_3 Like ""*" & strsearch & "*"
End If
End If
End If
Me.RecordSource = Task
Me.Requery
Me.txtSearch.SetFocus
End Sub
5 @R22095
อาจารย์ PichaiTC ครับ
แจ้ง error ว่า run-time error '13':
Type mismatch
ที่เป็นสีเหลืองที่
If DCount("1", "Adviser", adviser_1 Like "" * " & strsearch & " * "") > 0 Then ครับ
แจ้ง error ว่า run-time error '13':
Type mismatch
ที่เป็นสีเหลืองที่
If DCount("1", "Adviser", adviser_1 Like "" * " & strsearch & " * "") > 0 Then ครับ
6 @R22096
พอดีผมพิมพ์สด ไม่ได้ลอง code จริง ใน Access น่ะครับ
ลองแก้เป็น
ลองแก้เป็น
If DCount("1", "Adviser", "adviser_1 Like '*" & strsearch & "*'") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_1 Like '*" & strsearch & "*'"
Else
If DCount("1", "Adviser", "adviser_2 Like '*" & strsearch & "*'") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_2 Like '*" & strsearch & "*'"
Else
If DCount("1", "Adviser", "adviser_3 Like '*" & strsearch & "*'") > 0 Then
Task = "SELECT * FROM Adviser WHERE adviser_3 Like '*" & strsearch & "*'"
7 @R22097
ได้แล้วครับอาจารย์ ขอบคุณมากครับ
Time: 0.3361s
Private Sub search_Click()
Dim strsearch As String
Dim Task As String
strsearch = Me.txtSearch.Value
Task = "SELECT * FROM Adviser WHERE ((adviser_1 Like ""*" & strsearch & "*"") or (adviser_2 Like ""*" & strsearch & "*"") or (adviser_3 Like ""*" & strsearch & "*""))"
Me.RecordSource = Task
Me.txtSearch.SetFocus
End sub