ongke0711 > 17-06-21, 03:09 PM
(17-06-21, 02:54 PM)tungthoi15 Đã viết: Khi gõ vào Textbox từ có dấu hoặc không dấu mà nó vẫn cho ra kết quả giống nhau thì theo em vẫn nên thêm cột phụ "TENKHONGDAU", Ssau đó sửa câu lệnh tìm kiếm sSQL là:
Mã:sSQL = "Select * From tblNhanVien Where TENKHONGDAU Like '*" & UNItokdau(Me.txtTimTen) & "*'"
Em đã test thử và cho ra kết quả đều giống nhau; Ví dụ gõ "anh" hay "ánh" thì cho ra cùng kết quả.
tungthoi15 > 17-06-21, 03:13 PM
(17-06-21, 03:09 PM)ongke0711 Đã viết:Hoặc muốn tìm chính xác khi gõ có dấu trả về tên đúng có dấu y hệt thì theo em là làm thêm cái Option Group (em đặt là opChon), gồm 2 lựa chọn là: 1 là "Tìm có dấu" và 2 là "tìm Không dấu", rồi thêm code:(17-06-21, 02:54 PM)tungthoi15 Đã viết: Khi gõ vào Textbox từ có dấu hoặc không dấu mà nó vẫn cho ra kết quả giống nhau thì theo em vẫn nên thêm cột phụ "TENKHONGDAU", Ssau đó sửa câu lệnh tìm kiếm sSQL là:
Mã:sSQL = "Select * From tblNhanVien Where TENKHONGDAU Like '*" & UNItokdau(Me.txtTimTen) & "*'"
Em đã test thử và cho ra kết quả đều giống nhau; Ví dụ gõ "anh" hay "ánh" thì cho ra cùng kết quả.
Đối với form TimKiem1: bạn gõ từ "Ân" xem, nó cũng sẽ cho ra các từ như gõ từ "An" --> tức nó không loại bỏ các từ có chữ "a" và "ă".
Cũng căng nhỉ.
Select Case Ophchon
[/size]
Case 1 ' Tim co dau va tim chinh xac
sSQL = "Select * From tblNhanVien Where Ten Like '" & Me.txtTimTen & "'"
Case 2
sSQL = "Select * From tblNhanVien Where TenKhongDau Like '*" & Me.txtTimTen & "*'"
End Select
Me.sfmNhanVien.Form.RecordSource = sSQL
[size=x-small] Me.sfmNhanVien.Requery
ongke0711 > 17-06-21, 03:21 PM
ledangvan > 17-06-21, 05:28 PM
ongke0711 > 17-06-21, 06:01 PM
(17-06-21, 05:28 PM)ledangvan Đã viết: https://www.mediafire.com/file/e3zzdl0kz...1.mdb/file
sSQL = "Select * From tblNhanVien Where UNItokdau(tblNhanVien.Ten) Like '*" & Me.txtTimTen & "*'"
ongke0711 > 18-06-21, 01:03 AM
Option Compare Database
Option Explicit
Private Sub txtTimTen_AfterUpdate()
'// Dùng dau ngoac vuong [] trong cau lenh LIKE cua SQL
'/ Ví du: ... Like D[aâã...]n --> Like 'Dan', 'Dân', 'Dãn',...
Dim sSQL As String, sChuoiTK As String
Select Case Me.frmKieuTK
Case 1
sChuoiTK = getVowelStr(Me.txtTimTen)
Case 2
sChuoiTK = Me.txtTimTen
End Select
sSQL = "Select * From tblNhanVien Where Ten Like '*" & sChuoiTK & "*' Order By Ten"
Me.sfmNhanVien.Form.RecordSource = sSQL
Me.sfmNhanVien.Requery
End Sub
'// Hàm tong hop chuoi nguyen am voi các dau thanh: [aáàâ...], [eéèê...]
Function getVowelStr(txt As Variant) As String
If Len(Nz(txt, "")) = 0 Then
getVowelStr = ""
Exit Function
End If
Dim dic As Object, arrKeyList() As Variant, arrItemList() As Variant
Dim aa$, a$, a1$, a2$, e$, e1$, i$, o$, o1$, o2$, u$, u1$, y$, d$
Set dic = CreateObject("Scripting.Dictonary")
a = "a" & ChrW(224) & ChrW(225) & ChrW(227) & ChrW(7841) & ChrW(7843) 'a
a1 = ChrW(226) & ChrW(7845) & ChrW(7847) & ChrW(7849) & ChrW(7851) & ChrW(7853) 'â
a2 = "" & ChrW(259) & ChrW(7855) & ChrW(7857) & ChrW(7859) & ChrW(7861) & ChrW(7863) 'a-"
e = "e" & ChrW(232) & ChrW(233) & ChrW(7865) & ChrW(7867) & ChrW(7869) 'e
e1 = ChrW(234) & ChrW(7871) & ChrW(7873) & ChrW(7875) & ChrW(7877) & ChrW(7879) 'ê
i = "i" & ChrW(236) & ChrW(237) & ChrW(297) & ChrW(7881) & ChrW(7883)
o = "o" & ChrW(242) & ChrW(243) & ChrW(245) & ChrW(7885) & ChrW(7887)
o1 = ChrW(244) & ChrW(7889) & ChrW(7891) & ChrW(7893) & ChrW(7895) & ChrW(7897)
o2 = ChrW(417) & ChrW(7899) & ChrW(7901) & ChrW(7903) & ChrW(7905) & ChrW(7907)
u = "u" & ChrW(249) & ChrW(250) & ChrW(361) & ChrW(7909) & ChrW(7911)
u1 = ChrW(432) & ChrW(7913) & ChrW(7915) & ChrW(7917) & ChrW(7919) & ChrW(7921)
y = "y" & ChrW(253) & ChrW(7923) & ChrW(7925) & ChrW(7927) & ChrW(7929)
d = "d" & ChrW(273)
arrKeyList = Array("a", "a1", "a2", "e", "e1", "o", "o1", "o2", "u", "u1", "y", "d")
arrItemList = Array(a, a1, a2, e, e1, o, o1, o2, u, u1, y, d)
Dim k As Integer
For k = 0 To UBound(arrKeyList)
dic.Add arrKeyList(k), arrItemList(k)
Next k
Dim t As Integer, retTxt As String, v As Variant, flag As Boolean
retTxt = ""
For t = 1 To Len(txt)
flag = False
For Each v In dic.Keys
If InStr(dic.Item(v), Mid$(txt, t, 1)) > 0 Then
Select Case v
Case "a"
retTxt = retTxt & "[" & dic.Item("a") & dic.Item("a1") & dic.Item("a2") & "]"
Case "e"
retTxt = retTxt & "[" & dic.Item("e") & dic.Item("e1") & "]"
Case "o"
retTxt = retTxt & "[" & dic.Item("o") & dic.Item("o1") & dic.Item("o2") & "]"
Case "u"
retTxt = retTxt & "[" & dic.Item("u") & dic.Item("u1") & "]"
Case Else
retTxt = retTxt & "[" & dic.Item(v) & "]"
End Select
flag = True
End If
Next v
If flag = False Then
retTxt = retTxt & Mid$(txt, t, 1)
End If
Next t
getVowelStr = retTxt
End Function