ongke0711 > 16-06-21, 05:20 PM
maidinhdan > 16-06-21, 09:47 PM
ongke0711 > 16-06-21, 10:04 PM
(16-06-21, 09:47 PM)maidinhdan Đã viết: Gửi tặng 2 file, Cũng test sơ sơ... nói chung khó hơn tạo 1 con AL
Dùng chức năng Import từ file XMLtrong Access để dễ quan sát.
tungthoi15 > 17-06-21, 08:59 AM
Public Function UNItokdau(str$) As String
Dim kd$, unI$, i&, skd$, arrkd() As String, stt
kd = "a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,e,e,e,e,e,e,e,e,e,e,e,i,i,i,i,i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,u,u,u,u,u,u,u,u,u,u,u,y,y,y,y,y,d,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,E,E,E,E,E,E,E,E,E,E,E,I,I,I,I,I,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,U,U,U,U,U,U,U,U,U,U,U,Y,Y,Y,Y,Y,D"
unI = "02250224784302277841025978557857785978617863022678457847784978517853023302327867786978650234787178737875787778790237023678810297788302430242788702457885024478897891789378957897041778997901790379057907025002497911036179090432791379157917791979210253792379277929792502730193019278420195784002587854785678587860786201947844784678487850785202010200786678687864020278707872787478767878020502047880029678820211021078860213788402127888789078927894789604167898790079027904790602180217791003607908043179127914791679187920022179227926792879240272"
arrkd = Split(kd, ",")
For i = 1 To Len(str)
If InStr(unI, AscW(Mid(str$, i, 1))) > 0 And AscW(Mid(str$, i, 1)) > 127 Then
stt = InStr(unI, AscW(Mid(str$, i, 1))) \ 4
skd = skd & arrkd(stt)
Else
skd = skd & Mid(str, i, 1)
End If
Next
UNItokdau = skd
End Function
Function DoiTenKhongDau()
DoCmd.RunSQL "Update tblNhanVien SET tblNhanvien.TenKhongdau = UNItokdau(tblNhanvien.ten)"
End Function
tungthoi15 > 17-06-21, 09:24 AM
sSQL = "Select * From tblNhanVien Where UNItokdau(tblNhanVien.Ten) Like '*" & Me.txtTimTen & "*'"
ongke0711 > 17-06-21, 09:50 AM
(17-06-21, 08:59 AM)tungthoi15 Đã viết: To OngKe0711: Em tạo thêm 1 cột tên mới rồi chuyển từ cột tên có dấu sang thành không dấu là được
Mã:Public Function UNItokdau(str$) As String
Dim kd$, unI$, i&, skd$, arrkd() As String, stt
kd = "a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,e,e,e,e,e,e,e,e,e,e,e,i,i,i,i,i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,u,u,u,u,u,u,u,u,u,u,u,y,y,y,y,y,d,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,E,E,E,E,E,E,E,E,E,E,E,I,I,I,I,I,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,U,U,U,U,U,U,U,U,U,U,U,Y,Y,Y,Y,Y,D"
unI = "02250224784302277841025978557857785978617863022678457847784978517853023302327867786978650234787178737875787778790237023678810297788302430242788702457885024478897891789378957897041778997901790379057907025002497911036179090432791379157917791979210253792379277929792502730193019278420195784002587854785678587860786201947844784678487850785202010200786678687864020278707872787478767878020502047880029678820211021078860213788402127888789078927894789604167898790079027904790602180217791003607908043179127914791679187920022179227926792879240272"
arrkd = Split(kd, ",")
For i = 1 To Len(str)
If InStr(unI, AscW(Mid(str$, i, 1))) > 0 And AscW(Mid(str$, i, 1)) > 127 Then
stt = InStr(unI, AscW(Mid(str$, i, 1))) \ 4
skd = skd & arrkd(stt)
Else
skd = skd & Mid(str, i, 1)
End If
Next
UNItokdau = skd
End Function
Function DoiTenKhongDau()
DoCmd.RunSQL "Update tblNhanVien SET tblNhanvien.TenKhongdau = UNItokdau(tblNhanvien.ten)"
End Function
ledangvan > 17-06-21, 01:00 PM
ongke0711 > 17-06-21, 01:38 PM
(17-06-21, 01:00 PM)ledangvan Đã viết: ongke0711 anh thấy có một cách nữa là dùng hàm bỏ dấu -> Textbox có dấu cũng biến nó thành ko có dấu rồi làm lệnh tìm kiếm chữ ko dấu thì kể cả đánh có dấu hay ko dấu nó vẫn tìm được
ledangvan > 17-06-21, 02:32 PM
(17-06-21, 01:38 PM)ongke0711 Đã viết:(17-06-21, 01:00 PM)ledangvan Đã viết: ongke0711 anh thấy có một cách nữa là dùng hàm bỏ dấu -> Textbox có dấu cũng biến nó thành ko có dấu rồi làm lệnh tìm kiếm chữ ko dấu thì kể cả đánh có dấu hay ko dấu nó vẫn tìm được
Cũng là cách đúng đó anh. Anh thử gõ từ có dấu xem nó tìm có ra đúng từ có dấu không nhe.
tungthoi15 > 17-06-21, 02:54 PM
(17-06-21, 09:50 AM)ongke0711 Đã 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à:(17-06-21, 08:59 AM)tungthoi15 Đã viết: To OngKe0711: Em tạo thêm 1 cột tên mới rồi chuyển từ cột tên có dấu sang thành không dấu là được
Mã:Public Function UNItokdau(str$) As String
Dim kd$, unI$, i&, skd$, arrkd() As String, stt
kd = "a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,e,e,e,e,e,e,e,e,e,e,e,i,i,i,i,i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,u,u,u,u,u,u,u,u,u,u,u,y,y,y,y,y,d,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,E,E,E,E,E,E,E,E,E,E,E,I,I,I,I,I,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,U,U,U,U,U,U,U,U,U,U,U,Y,Y,Y,Y,Y,D"
unI = "02250224784302277841025978557857785978617863022678457847784978517853023302327867786978650234787178737875787778790237023678810297788302430242788702457885024478897891789378957897041778997901790379057907025002497911036179090432791379157917791979210253792379277929792502730193019278420195784002587854785678587860786201947844784678487850785202010200786678687864020278707872787478767878020502047880029678820211021078860213788402127888789078927894789604167898790079027904790602180217791003607908043179127914791679187920022179227926792879240272"
arrkd = Split(kd, ",")
For i = 1 To Len(str)
If InStr(unI, AscW(Mid(str$, i, 1))) > 0 And AscW(Mid(str$, i, 1)) > 127 Then
stt = InStr(unI, AscW(Mid(str$, i, 1))) \ 4
skd = skd & arrkd(stt)
Else
skd = skd & Mid(str, i, 1)
End If
Next
UNItokdau = skd
End Function
Function DoiTenKhongDau()
DoCmd.RunSQL "Update tblNhanVien SET tblNhanvien.TenKhongdau = UNItokdau(tblNhanvien.ten)"
End Function
Là một trong các cách xử lý đúng rồi đó.
Cách tiếp cận cũng gần như vậy.
À quên chưa kiểm tra vụ gõ từ có dấu vào textbox tìm kiếm thì lại tìm không ra.
sSQL = "Select * From tblNhanVien Where TENKHONGDAU Like '*" & UNItokdau(Me.txtTimTen) & "*'"
Select Case Ophchon
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
Me.sfmNhanVien.Requery