กระทู้เก่าบอร์ด อ.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
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 กันเนี่ย งงล่ะ เหอๆ
แล้วลองเอา ที่ 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 ทำมาทุกอย่างครับ ผิดถูกอย่าว่ากันนะครับ พึ่งหัดโพสครับ ขอบคุณครับ
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
aspongsak@gmail.com
7 @R02111
ทำได้แล้วครับแต่ว่าชื่อนามสกุลต้อ?พิมพ์ติดกันครับถึงจะออก ขอบคุณครับ
พี่ช่วยดูรายงานให้ผมได้ไหมครับยังไม่ได้ทำเลย แบบว่าอยากรู้ว่าเกษตรกรอำเภอนี้(แยกเป็นอำเภอ)เป็นหนี้กับ ธกส.กี่ราย ทำได้ไหมครับ
พี่มีเอ็มไหมครับออนคุยกับผมก้อได้ผมออนตลอด
พี่ช่วยดูรายงานให้ผมได้ไหมครับยังไม่ได้ทำเลย แบบว่าอยากรู้ว่าเกษตรกรอำเภอนี้(แยกเป็นอำเภอ)เป็นหนี้กับ ธกส.กี่ราย ทำได้ไหมครับ
พี่มีเอ็มไหมครับออนคุยกับผมก้อได้ผมออนตลอด
8 @R02112
โหลดไฟล์ได้ที่นี่ครับผม ขอบคุณครับ
http://www.tempf.com/getfile.php?filekey=1241425825.04257_frdfund.rar&mime=application/rar
http://www.tempf.com/getfile.php?filekey=1241425825.04257_frdfund.rar&mime=application/rar
Time: 0.2943s