ongke0711 > 27-06-23, 10:41 PM
(27-06-23, 02:18 PM)huyhoang22 Đã viết: Tiện bạn cho mình hỏi thêm chút là sao tìm kiếm mình tìn định dạng table là text thì nó cho tìm kiếm khi mình chuyển định đạng về number thì không tìn được nhỉ: cụ thể combor cbtim là dạng number.
huyhoang22 > 28-06-23, 02:51 PM
(27-06-23, 10:41 PM)ongke0711 Đã viết:(27-06-23, 02:18 PM)huyhoang22 Đã viết: Tiện bạn cho mình hỏi thêm chút là sao tìm kiếm mình tìn định dạng table là text thì nó cho tìm kiếm khi mình chuyển định đạng về number thì không tìn được nhỉ: cụ thể combor cbtim là dạng number.
Bạn phải đọc hiểu thật kỹ cái Class tìm kiếm trong comboBox.
Trong hàm có phần tham số khai báo tên Field cần tìm kiếm, nếu bạn đã biết/ xác định rõ Field nào cần tìm thì khai báo nó trong khởi tạo Class luôn. Khai báo này giúp Class khỏi chạy vòng lặp qua toàn bộ các Fields, giảm tốc độ tìm kiếm.
Trường hợp của bạn field tìm kiếm dạng Number thì bạn cứ nhập tên Field vào. Trong class có cái hàm getFilter() tôi thấy code nó thiếu một phần cho dữ liệu dạng Number (dbInteger, db...) nên khi bạn khai báo để trống tên field nó sẽ không chạy ra chuỗi Filter với Field dạng Num.
Trước mắt cứ làm như hình, khỏi phải sửa hàm.
ongke0711 > 29-06-23, 11:40 AM
(28-06-23, 02:51 PM)huyhoang22 Đã viết: Bạn thật là pro nhìn cái biết liền mình lận code mãi ko xong. bạn code giúp cho nó hoàn chỉnh khi được ko?
Private Function getFilter(TheText As String) As String
'To make this work well convert all fields to search to a string
'Example: strDateDue: cstr(dtmDueDate)
Dim fld As DAO.Field
Dim RS As DAO.Recordset
Dim strFilter As String
Dim strLike As String
TheText = Replace(TheText, "'", "''")
TheText = Replace(TheText, "#", "[#]")
If mHandleInternationalCharacters Then
TheText = InternationalCharacters(TheText)
End If
If mSearchType = FromBeginning Then
strLike = " like '"
Else
strLike = " like '*"
End If
Set RS = mCombo.Recordset
If Me.FilterFieldName = "" Or Me.FilterFieldName = "All_Fields" Then
For Each fld In RS.Fields
If strFilter = "" Then
strFilter = fld.Name & strLike & TheText & "*'"
Else
strFilter = strFilter & " OR " & fld.Name & strLike & TheText & "*'"
End If
Next fld
Else
strFilter = Me.FilterFieldName & strLike & TheText & "*'"
End If
getFilter = strFilter
End Function
huyhoang22 > 01-07-23, 01:44 PM
(29-06-23, 11:40 AM)ongke0711 Đã viết:(28-06-23, 02:51 PM)huyhoang22 Đã viết: Bạn thật là pro nhìn cái biết liền mình lận code mãi ko xong. bạn code giúp cho nó hoàn chỉnh khi được ko?
Bạn sửa cái hàm getFilter trong Class module "C01" như sau:
Mã PHP:Private Function getFilter(TheText As String) As String
'To make this work well convert all fields to search to a string
'Example: strDateDue: cstr(dtmDueDate)
Dim fld As DAO.Field
Dim RS As DAO.Recordset
Dim strFilter As String
Dim strLike As String
TheText = Replace(TheText, "'", "''")
TheText = Replace(TheText, "#", "[#]")
If mHandleInternationalCharacters Then
TheText = InternationalCharacters(TheText)
End If
If mSearchType = FromBeginning Then
strLike = " like '"
Else
strLike = " like '*"
End If
Set RS = mCombo.Recordset
If Me.FilterFieldName = "" Or Me.FilterFieldName = "All_Fields" Then
For Each fld In RS.Fields
If strFilter = "" Then
strFilter = fld.Name & strLike & TheText & "*'"
Else
strFilter = strFilter & " OR " & fld.Name & strLike & TheText & "*'"
End If
Next fld
Else
strFilter = Me.FilterFieldName & strLike & TheText & "*'"
End If
getFilter = strFilter
End Function
huyhoang22 > 04-07-23, 10:09 AM
(29-06-23, 11:40 AM)ongke0711 Đã viết:(28-06-23, 02:51 PM)huyhoang22 Đã viết: Bạn thật là pro nhìn cái biết liền mình lận code mãi ko xong. bạn code giúp cho nó hoàn chỉnh khi được ko?
Bạn sửa cái hàm getFilter trong Class module "C01" như sau:
Mã PHP:Private Function getFilter(TheText As String) As String
'To make this work well convert all fields to search to a string
'Example: strDateDue: cstr(dtmDueDate)
Dim fld As DAO.Field
Dim RS As DAO.Recordset
Dim strFilter As String
Dim strLike As String
TheText = Replace(TheText, "'", "''")
TheText = Replace(TheText, "#", "[#]")
If mHandleInternationalCharacters Then
TheText = InternationalCharacters(TheText)
End If
If mSearchType = FromBeginning Then
strLike = " like '"
Else
strLike = " like '*"
End If
Set RS = mCombo.Recordset
If Me.FilterFieldName = "" Or Me.FilterFieldName = "All_Fields" Then
For Each fld In RS.Fields
If strFilter = "" Then
strFilter = fld.Name & strLike & TheText & "*'"
Else
strFilter = strFilter & " OR " & fld.Name & strLike & TheText & "*'"
End If
Next fld
Else
strFilter = Me.FilterFieldName & strLike & TheText & "*'"
End If
getFilter = strFilter
End Function
ongke0711 > 04-07-23, 10:58 AM
(04-07-23, 10:09 AM)huyhoang22 Đã viết: Bạn ongke0711 ơi không biết Class C01 có lỗi gì không mà sao mình muốn đóng file sang Accde thì nó không cho mình thử bỏ class này ra thì đóng file được. bạn có thể giúp với.
Set FrindCbTim = Nothing
huyhoang22 > 04-07-23, 02:41 PM
(04-07-23, 10:58 AM)ongke0711 Đã viết:(04-07-23, 10:09 AM)huyhoang22 Đã viết: Bạn ongke0711 ơi không biết Class C01 có lỗi gì không mà sao mình muốn đóng file sang Accde thì nó không cho mình thử bỏ class này ra thì đóng file được. bạn có thể giúp với.
Bạn đã dùng tới Class, khởi tạo nó thì khi kết thúc cũng phải đóng nó lại, giải phóng đối tượng Class đi chứ.
Ở sự kiện Đóng Form thì có bao nhiêu Class bạn đã khởi tạo phải giải phóng nó hết.
Ví dụ:
Mã PHP:Set FrindCbTim = Nothing
huyhoang22 > 04-07-23, 04:04 PM
ongke0711 > 04-07-23, 06:05 PM
(04-07-23, 04:04 PM)huyhoang22 Đã viết: Nhờ bạn xem giúp
link:Data
cảm ơn nhiều