ต้องการสืบค้นได้ทั้งชื่อทั้งID ทำยังไงคะ
กระทู้เก่าบอร์ด อ.Yeadram

 2,162   11
URL.หัวข้อ / URL
ต้องการสืบค้นได้ทั้งชื่อทั้งID ทำยังไงคะ

Private Sub Command24_Click()
' Find the record that matches the control.
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[IDPatient] = '" & Me![txtsearch] & "'"
    Me.Bookmark = rs.Bookmark
End Sub

ต้องการ สืบค้นได้ทั้งชื่อทั้งID ตรงโค้ด

rs.FindFirst "[IDPatient]= '" & Me![txtsearch] & "'"

ต้องใส่ NamePatient ตรงไหนอ่ะคะ หรือว่าแยกมาอีกช่องเซิร์ทนึง แล้วจะใช้เซิร์ทปุ่มเดียวกันก็ได้ค่ะ

11 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R19696
rs.FindFirst "[IDPatient]= '" & Me![txtsearch] & "'or [อีกฟิลด์]= '" & Me![txtsearch] & "'"
2 @R19697
แก้ไข : ก่อน or ให้มีช่องว่างด้วยครับ
3 @R19698
ทำได้หลายรูปแบบหลายคำสั่ง กรณีนี้เอาเฉพาะรูปแบบโค๊ดที่ จขกท ให้มานะครับ

แบบที่ อ.สันติสุข แนะนำ จะได้ประมาณนี้

    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[IDPatient]= '" & Me![txtsearch] & "' OR [NamePatient]= '" & Me![txtsearch] & "'"
    Me.Bookmark = rs.Bookmark

อีกแบบคือใช้ .NoMatch ก็ได้ครับ เช่น

    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[IDPatient] = '" & Me![txtsearch] & "'"
    If rs.NoMatch Then ' ถ้าไม่มีค่าที่ตรง ก็ให้หาในฟิลด์ NamePatient ต่อไป        rs.FindFirst "[NamePatient] = '" & Me![txtsearch] & "'"
        If rs.NoMatch Then ' ถ้ายังไม่ตรงอีก ก็แสดงข้อความ
            MsgBox "ไม่พบข้อมูล"
            Exit Sub
        End If
    End If
    Me.Bookmark = rs.Bookmark

อีกทั้ง ถ้ากรณีเราต้องการหาทั้งฟิลด์ที่มี Data Type เป็นตัวเลข และตัวหนังสือในชื่อเดียวกันคือ txtsearch บนฟอร์ม ก็สามารถทำในรูปแบบของโค๊ดนี้ได้เช่นกัน

    Dim rs As Object
    Set rs = Me.Recordset.Clone
    If IsNumeric(Me![txtsearch]) Then ' ตรวจสอบว่าค่าที่ใส่ในช่อง txtsearch เป็นตัวเลขทั้งหมดหรือไม่
        rs.FindFirst "[IDPatient] = " & Me![txtsearch] ' ถ้าเป็นตัวเลข
    Else
        rs.FindFirst "[NamePatient] = '" & Me![txtsearch] & "'" ' ถ้าเป็นตัวอักษร
    End If
    If rs.NoMatch Then ' ถ้าไม่พบข้อมูลที่ตรงให้แสดง Msgbox
        MsgBox "ไม่พบข้อมูลที่ต้องการ"
        Exit Sub
    End If
    Me.Bookmark = rs.Bookmark

ลองปรับใช้ดูครับ พอดีเห็นว่าน่าจะเป็นประโยชน์กับผู้กำลังเริ่มต้นหลายๆคนนะครับ
4 @R19699
แล้วถ้าเป็นโค้ดนี้

Private Sub Command63_Click()
On Error Resume Next
    Me.subtblDriver.Form.FilterOn = False
    Me.subtblDriver.Form.Filter = Me.Combo64.Value & " = '" & Me.Text24.Value & "'"
    Me.subtblDriver.Form.FilterOn = True
    
    
End Sub

แบบนี้ใส่ได้แต่ตัวอักษรอ่าค่ะ อยากได้โค้ดที่ใส่ได้ทั้งตัวอักษรและไอดี เหมือนกันค่ะ
ขอบคุณค่ะ
5 @R19700
ไม่แน่ใจว่าคุณเข้าใจหรือไม่ว่า Filter property ต้องการค่าอะไร ? รูปแบบเป็นยังไง ?

แล้ว expression ที่บอกมา Me.Combo64.Value & " = '" & Me.Text24.Value & "'" มัน evaluate ค่าออกมาเป็นอะไร ลองยกตัวอย่างมาหน่อย
6 @R19701
ต้องการทำช่องsearchโดยใช้combo box ให้เลือกระหว่าง Student ID กับ Student Name ค่ะ

Private Sub buttonsearch_Click()
On Error Resume Next
    Me.subtblDriver.Form.FilterOn = False
    Me.subtblDriver.Form.Filter = Me.combobox.Value & " = '" & Me.searchfor.Value & "'"
    Me.subtblDriver.Form.FilterOn = True

ตอนนี้โค้ดนี้สามารถsearchได้แค่ชื่อ แต่ว่าต้องการให้สามารถsearchได้ทั้งไอดีและชื่อค่ะ
7 @R19702
ช่วยตอบที่ผมถามด้วยครับ
8 @R19703
เพิ่งจะหัดโปรแกรมaccess จึงไม่ค่อยเข้าใจคำถามค่ะ ช่วยอธิบายคำถามอีกทีได้มั้ยคะ ขอบคุณค่ะ
9 @R19704
Filter property ต้องการ string expression ที่ใช้เป็นเงื่อนไขในการกรองให้ได้เรคอร์ดตรงตามที่ต้องการ ค่าของ string expression ที่ evaluate มานี้ จะเหมือนกับส่วนของ WHERE clause ใน SQL statement   ดังนั้นผลลัพธ์ตรงนี้หลังจากที่ evaluate แล้วจึงต้องได้ string ที่มีค่าเป็น "ชื่อฟิลด์แรก = 'ค่า' or ชื่อฟิลด์สอง = 'ค่า' "

ทีนี้ก็แค่เอาชื่อฟิลด์ที่ถูกต้องใส่แทนลงไป ก็เท่านั้นเองครับ
10 @R19708
อ่ออออ เข้าใจแล้วค่ะ ขอบคุณมากค่ะ
11 @R19710
ขอบคุณมากค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2483s