ค้นหารหัสได้แต่ค้นหาชื่อ นามสกุลไม่ได้ครับช่วยที
กระทู้เก่าบอร์ด อ.Yeadram

 2,319   8
URL.หัวข้อ / URL
ค้นหารหัสได้แต่ค้นหาชื่อ นามสกุลไม่ได้ครับช่วยที

Option Compare Database
Option Explicit
Private Function basOrderby(strKey1 As String, strKey2 As String) As Integer
    Dim strSQL As String
    'Set row source for list box
    If (Len(strKey1) > 0 And Len(strKey2) > 0) Then
        strSQL = "SELECT ipcard, [tname] & [Fname] & ""   "" & [lastName] AS FirstName, strSalespersonID"
        strSQL = strSQL & " FROM tblSalespersonContact "
        strSQL = strSQL & " WHERE ipcard LIKE " & "'*" & strKey1 & "*'" & " OR Fname LIKE " & "'*" & strKey2 & "*'"
        strSQL = strSQL & " ORDER BY ipcard;"
    ElseIf (Len(strKey1) > 0 And Len(strKey2) <= 0) Then
        strSQL = "SELECT ipcard, [tname] & [Fname] & ""   "" & [lastName] AS FirstName, ipcard "
        strSQL = strSQL & " FROM tblSalespersonContact "
        strSQL = strSQL & " WHERE ipcard LIKE " & "'*" & strKey1 & "*'"
        strSQL = strSQL & " ORDER BY ipcard;"
    ElseIf (Len(strKey1) <= 0 And Len(strKey2) > 0) Then
        strSQL = "SELECT ipcard, [tname] & [Fname] & ""   "" & [lastName] AS FirstName, ipcard "
        strSQL = strSQL & " FROM tblSalespersonContact "
        strSQL = strSQL & " WHERE Fname LIKE " & "'*" & strKey2 & "*'"
        strSQL = strSQL & " ORDER BY ipcard;"
    End If
    
    Me!lstSearch.RowSource = strSQL
    Me!lstSearch.Requery
End Function

Private Sub cmdSearch_Click()
    Dim response As Integer
    If IsNull(Forms![frmSearch]!txtCode) And IsNull(Forms![frmSearch]!txtName) Then
        MsgBox "¡Ãسһé͹¢éÍÁÙÅ·Õèµéͧ¡Òäé¹ËÒ¤èÐ", vbCritical + vbOKCancel, "¤Óàµ×͹"
    ElseIf IsNull(Forms![frmSearch]!txtCode) Then
        response = basOrderby("", Trim(Forms![frmSearch]!txtName))

    ElseIf IsNull(Forms![frmSearch]!txtName) Then

        response = basOrderby(Trim(Forms![frmSearch]!txtCode), "")

    End If
    Me!lstSearch.SetFocus
    
      
    
End Sub

Private Sub lstSearch_AfterUpdate()
'Once a record is selected in the list, enable the showRecord button
    ShowRecord.Enabled = True
End Sub

Private Sub lstSearch_DblClick(Cancel As Integer)
'If the user double-clicks in the list, act as though
'the ShowRecord button was clicked
    If Not IsNull(lstSearch) Then
        ShowRecord_Click
    End If
End Sub

Private Sub ShowRecord_Click()
'Find a selected record, then close the search dialog box

    DoCmd.OpenForm "frmSalespersonContact", , , _
        "[tblSalespersonContact.ipcard]=" & "'" & Me.lstSearch.Column(0) & "'"
    Else
           
    'Close the dialog box
    DoCmd.Close acForm, "frmSearch"
    
End Sub
Private Sub Cancel_Click()
On Error GoTo Err_Cancel_Click
'Cancel and close the form

    DoCmd.Close

Exit_Cancel_Click:
    Exit Sub

Err_Cancel_Click:
    MsgBox Err.Description
    Resume Exit_Cancel_Click
    
End Sub



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

1 @R02078
ผมทำโปรเจคสำนักงาน ด้วย access ครับ แบบต้องการหารายงานครับ แบบว่าต้องการหา สมาชิกอำเภอนี้ ที่เป็นหนี้กับ ธ.ก.ส. ว่าเป็นหนี้กี่รายได้จะหาได้ไหมครับใน Access ใครช่วยดูให้ผมได้ไหมครับ ต้องการคนช่วยด่วน มีไฟล์ให้โหลดช่วยแก้หน่อยครับผม ไม่งั้นหัวหน้าเอาตายแน่ๆ
2 @R02081
debug.print strSQL
แล้วลองเอา ที่ debug ได้ ไปลองสร้างคิวรี่ดูครับ แล้วจะรู้ว่ามันผิดปกติตรงไหน

ข้อคิด:
ในเว็บบอร์ดนี้ผมมี textbox อันเดียว ปุ่มค้นหาปุ่มเดียว แต่สามารถค้นหาข้อมูลได้จากทั้ง ชื่อกระทู้, เนื้อความกระทู้ และทั้งเนื้อความของความเห็นซึ่งอยู่คนละตาราง

ของคุณก็ใช้ txtSearch ตัวเดียวก็ได้ ผู้ใช้รู้อะไรก็คีย์อันนั้นมาเลย จะรู้แค่ชื่อ หรือแค่นามสกุล หรือรู้ รหัส ก็คีย์มาเลย เวลาคุณใช้ Where ก็...

Where (ipcard Like x) or (fname Like x) or (lname like x)

เห็นมั้ยครับ x มันจะเป็นอะไรก็ได้ เพราะเราใช้ Or
โดยที่ x เวลาเขียนเต็มๆ ก็จะได้ว่า
'*" & txtSearch & "*'



เอ๊ะ เดี๋ยวก่อน เขียนมาถึงตรงนี้ผมเริ่มสับสนกับคำถาม "ค้นหารหัสได้แต่ค้นหาชื่อ นามสกุลไม่ได้"

หมายถึง กรอกช่องรหัสแล้วกดปุ่มค้น มันทำงาน แต่กรอกช่อง ชื่อ-สกุล แล้วกดค้น มันไม่ทำงาน

หรือหมายถึง
ถ้ากรอกช่องรหัส มันทำงาน และหาข้อมูลเจอแต่กรอกช่องชื่อสกุล มันก็ทำงานเหมือนกันแต่หาข้อมูลไม่เจอ
ตกลงปัญหามันอยู่ที่ Sub หรืออยู่ที่ Function กันเนี่ย งงล่ะ เหอๆ
3 @R02086
ถ้ากรอกช่องรหัส มันทำงาน และหาข้อมูลเจอแต่กรอกช่องชื่อสกุล มันก็ทำงานเหมือนกันแต่หาข้อมูลไม่เจอ อันนี้ถูกต้องแล้วครับ
4 @R02097
ขออนุญาตตอบคำถามครับ
Option Compare Database
Private Function basOrderby(strKey1 As String, strKey2 As String) As Integer
    Dim strSQL As String
    'Set row source for list box
    If (Len(strKey1) > 0 And Len(strKey2) > 0) Then
        strSQL = "SELECT ipcard, [tname] & [Fname] & ""   "" & [lastName] AS FirstName, strSalespersonID"
        strSQL = strSQL & " FROM tblSalespersonContact "
        strSQL = strSQL & " WHERE ipcard LIKE " & "'*" & strKey1 & "*'" & " or Fname LIKE " & "'*" & strKey2 & "*'"
        strSQL = strSQL & " ORDER BY ipcard;"
    ElseIf (Len(strKey1) > 0 And Len(strKey2) <= 0) Then
        strSQL = "SELECT ipcard, [tname] & [Fname] & ""   "" & [lastName] AS FirstName, ipcard "
        strSQL = strSQL & " FROM tblSalespersonContact "
        strSQL = strSQL & " WHERE ipcard LIKE " & "'*" & strKey1 & "*'"
        strSQL = strSQL & " ORDER BY ipcard;"
    ElseIf (Len(strKey1) <= 0 And Len(strKey2) > 0) Then
        strSQL = "SELECT ipcard, [tname] & [Fname] & ""   "" & [lastName] AS FirstName, ipcard "
        strSQL = strSQL & " FROM tblSalespersonContact "
        'ตรงนี้ก็เปลี่ยนใหม่ครับจาก strSQL = strSQL & " WHERE Fname LIKE " & "'*" & strKey2 & "*'" เป็นตามบรรทัดข้างล่างครับ
        strSQL = strSQL & " WHERE Fname+Tname LIKE " & "'*" & strKey2 & "*'"
        strSQL = strSQL & " ORDER BY ipcard;"
    End If
     
    Me!lstSearch.RowSource = strSQL
    Me!lstSearch.Requery
End Function

Private Sub Command6_Click()
Dim response As Integer
    If IsNull(Forms![frmSearch]!txtCode) And IsNull(Forms![frmSearch]!txtName) Then
        MsgBox "กรุณาระบุเงื่อนไขในการค้นหาด้วยครับ", vbCritical + vbOKCancel, "แจ้ง"
    ElseIf IsNull(Forms![frmSearch]!txtCode) Then
        response = basOrderby("", Trim(Forms![frmSearch]!txtName))
    ElseIf IsNull(Forms![frmSearch]!txtName) Then

        response = basOrderby(Trim(Forms![frmSearch]!txtCode), "")
        '--------------บรรทัดข้างล่างนี้ผมเพิ่มเข้ามาครับ นอกนั้นจากลักษณะที่คุณเขียนมาก็ไม่มี error อะไรนะครับ ที่ผมเจอน่าจะมาจากข้อมูลที่ค้นหาไม่มีครับ
        'แต่เท่าที่ผมลองค้นดูใน TextBox ชื่อว่า txtName โดยพิมพ์คำค้นว่า     "ตลาด"   จะแสดงผลลัพธ์ 3 รายการ จากนั้นผมก็ไปพิมพ์ 202 105 เข้าไปใน
        'ในช่อง txtCode ผลที่ได้ก็จะแสดง 1 รายการ
    Else
    
    response = basOrderby(Trim(Forms![frmSearch]!txtCode), Trim(Forms![frmSearch]!txtName))
        '--------------------------------------------------------------------
    End If
    Me!lstSearch.SetFocus
End Sub

เดี๋ยวส่งไฟล์ตัวอย่างที่ทดลองไปให้ดูครับ ตามลักษณะที่คุณ max ทำมาทุกอย่างครับ ผิดถูกอย่าว่ากันนะครับ พึ่งหัดโพสครับ ขอบคุณครับ
5 @R02108
อันที่บอกยิ่งไม่ออก ทั้งรหัสทั้งชื่อเลยครับ ลองแล้ว คุณ myjock มีเมล์ไหมครับเดี๋ยวผมส่งไฟล์ไปให้ดูได้ป่ะ
6 @R02110
คุณ webmasterd1 ผมขอไฟล์ด้วยครับส่งมาที่
aspongsak@gmail.com
7 @R02111
ทำได้แล้วครับแต่ว่าชื่อนามสกุลต้อ?พิมพ์ติดกันครับถึงจะออก ขอบคุณครับ

พี่ช่วยดูรายงานให้ผมได้ไหมครับยังไม่ได้ทำเลย แบบว่าอยากรู้ว่าเกษตรกรอำเภอนี้(แยกเป็นอำเภอ)เป็นหนี้กับ ธกส.กี่ราย ทำได้ไหมครับ

พี่มีเอ็มไหมครับออนคุยกับผมก้อได้ผมออนตลอด
8 @R02112
โหลดไฟล์ได้ที่นี่ครับผม ขอบคุณครับ
http://www.tempf.com/getfile.php?filekey=1241425825.04257_frdfund.rar&mime=application/rar
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2943s