Tìm Kiếm trên ListBox với 2 cột (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
965
Được thích
175
Giới tính
Nữ
Chào mọi người, Em có File này được Anh HieuCD giúp đỡ, giờ em muốn các AC giúp đỡ khi em gỏ từ vào TextBox1 thì có thể tìm trên cả 2 cột "Nhà Cung Cấp" và "Tên Hàng Hóa". Em xin ví dụ như sau:
1/nếu gỏ "Chị Thơm" vào TextBox1 thì ListBox1 sẽ hiện tất cả nhà cung cấp là "Chị Thơm"
2/nếu gỏ "Bánh" vào TextBox1 thì ListBox1 sẽ hiện tất cả tên hang hóa là "bánh bao loại to, bánh snack, bánh mì nướng..vv...v"
Ở Form hiện tại đang tìm theo cột 2 (tên hang hóa),nhưng em thấy tìm cũng chưa chính xác.
Thường muốn tìm theo cột, em thường thấy phải them 2 OptionButton để chọn theo từng cột, còn em thấy trên một DD khác có form cứ gỏ vào textbox là nó tìm từ chính xác của tất cả các cột trên listBox.
Mong mọi người giúp đỡ.
 

File đính kèm

Chào mọi người, Em có File này được Anh HieuCD giúp đỡ, giờ em muốn các AC giúp đỡ khi em gỏ từ vào TextBox1 thì có thể tìm trên cả 2 cột "Nhà Cung Cấp" và "Tên Hàng Hóa". Em xin ví dụ như sau:
1/nếu gỏ "Chị Thơm" vào TextBox1 thì ListBox1 sẽ hiện tất cả nhà cung cấp là "Chị Thơm"
2/nếu gỏ "Bánh" vào TextBox1 thì ListBox1 sẽ hiện tất cả tên hang hóa là "bánh bao loại to, bánh snack, bánh mì nướng..vv...v"
Ở Form hiện tại đang tìm theo cột 2 (tên hang hóa),nhưng em thấy tìm cũng chưa chính xác.
Thường muốn tìm theo cột, em thường thấy phải them 2 OptionButton để chọn theo từng cột, còn em thấy trên một DD khác có form cứ gỏ vào textbox là nó tìm từ chính xác của tất cả các cột trên listBox.
Mong mọi người giúp đỡ.
file nầy mình chỉ góp phần rất nhỏ, chủ yếu là của các bạn khác
chạy thử code
Mã:
Private Sub TimKiem()
Dim GetRows()
Dim strType As String
Dim n As Long, r As Long
strType = UCase(TextBox1) & "*"


If Trim(TextBox1) = "" Then
  ListBox1.Clear
Else
' xoa ket qua cu
  ListBox1.Clear
  n = 0
  For r = 1 To UBound(Arrchungloai, 1)
    If UCase(Arrchungloai(r, 1)) Like strType Or UCase(Arrchungloai(r, 2)) Like strType Then
      n = n + 1
      ReDim Preserve GetRows(1 To n)
      GetRows(n) = r
    End If
  Next


  If n Then
    Dim ArrFilter(), c As Byte
    ReDim ArrFilter(1 To n, 1 To UBound(Arrchungloai, 2))


    For r = 1 To n
      For c = 1 To UBound(Arrchungloai, 2)
        ArrFilter(r, c) = Arrchungloai(GetRows(r), c)
      Next
    Next
' nhap ket qua moi
    ListBox1.List = ArrFilter
  End If
End If
End Sub
 
Upvote 0
Cám Ơn anh Hiếu nhiều.
Sao code trước của em tìm không chính xác theo từ, như gỏ "dầu" thì có cả "Neptune" nữa.
Code của anh chỉ khác chổ này:
Mã:
If UCase(Arrchungloai(r, 1)) Like strType Or UCase(Arrchungloai(r, 2)) Like strType Then
 
Lần chỉnh sửa cuối:
Upvote 0
Em hỏi ngoài tí, nếu tìm tiếp cột 3 và 4 thì code thêm như vầy phải không ah:
Mã:
If UCase(Arrchungloai(r, 1)) Like strType Or UCase(Arrchungloai(r, 2)) Like strType Or UCase(Arrchungloai(r, 3)) Like strType Or UCase(Arrchungloai(r, 4)) Like strType Then
 
Upvote 0
Cám Ơn anh Hiếu nhiều.
Sao code trước của em tìm không chính xác theo từ, như gỏ "dầu" thì có cả "Neptune" nữa.
Code của anh chỉ khác chổ này:
Mã:
If UCase(Arrchungloai(r, 1)) Like strType Or UCase(Arrchungloai(r, 2)) Like strType Then
bạn sai chổ màu đỏ
Mã:
...
GetRows(n) = r [COLOR=#ff0000]+ 1[/COLOR]
...
 
Upvote 0
tạo Form sổ chi tiết rồi gán vào sổ chi tiết mình không làm vì nó phức tạp hóa vấn đề, tốt nhất là bạn tạo trực tiếp không cần Form
bạn kiểm tra file xem sao, mình gởi code ở đâu đó rồi, lâu quá không nhớ
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom