Giúp đỡ tìm từ bất kỳ trong List View

  • Thread starter Thread starter NHG
  • Ngày gửi Ngày gửi
Liên hệ QC

NHG

Thành viên hoạt động
Tham gia
15/1/07
Bài viết
148
Được thích
126
Bạn nào có thể sửa code để khi mình đánh từ bất kì vào ô tìm kiếm thì chỉ có những công ty có chứa từ đó mới hiện lên trong List View đc ko?

Chi tiết câu hỏi mình gửi trong File đính kèm, mình nghĩ rằng nếu nếu câu hỏi này đc giải đáp sẽ giúp ích cho những người làm kế toán như mình rất nhiều

À File mình gửi kèm dùng Font TCVN3 các bạn ạ

Cách làm này của mình cũng thực hiện đc các yêu cầu trên nhưng hơi rắc rối, mình Up lên đây cho các bạn chỉ mang tính chất tham khảo.
Mình mong rằng các bạn sẽ lập trình đc những đoạn mã để quá trình tìm kiếm đơn giản hơn (chứ đừng lằng nhằng như cách của mình)--=0
 

File đính kèm

Giả sử rằng, ListView của bạn có tên là: LvMaSanPham, bạn muốn rằng trong textbox: txtMaSanPham nếu bạn gõ các ký tự đầu thì tự động ListView sẽ cuộn lên cho bạn, bạn tham khảo code sau:
Mã:
Private Sub txtMaSanPham_Change()
    Dim It As ListItem
    On Error Resume Next
    Set It = ListViewFindItem(Me.txtMaSanPham, Me.LvMaSanPham, elvSearchText)
End Sub
Chú ý: Chỉ áp dụng cho cột đầu của ListView thôi.
Bạn có thể tham khảo Module ListView sau:
'List View Utility Module By Andrew Baker

'Copyright www.vbusers.com
Chào bạn,

LVD

Một cách nữa là bạn giới hạn các trường tìm kiếm của bạn.
Giả sử khi form được load bạn load các trường vào listview, sau đó bạn có thể lọc theo trường nào đó bạn cần.
Mã:
rivate Sub cmdFilter_Click()
    Dim sCompare As String
    Dim sItemCode As String, sUnit As String, sDes As String
    Dim sAvePrice As String, sLastestPrice As String, sStandPrice As String
    Dim lItems As Long, i As Long, lPos As Long
    Dim It As ListItem
    On Error GoTo cmdFilter_Click_Error
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        
    End With
    sCompare = txtMoTa.Text
    'Xoa truoc
    Me.lvLuu.ListItems.Clear
    If Len(Trim(txtMoTa.Text)) > 0 Then
        'Neu trong truong hop
        'Nguoi su dung co dua du lieu vao Textbox Mo Ta
        lItems = Me.LvMaSanPham.ListItems.Count
        If lItems > 1 Then
            'Chi thuc hien neu co 2 phan tu tro len
            For i = 1 To lItems
                With Me.LvMaSanPham
                    sItemCode = .ListItems(i).Text
                    sUnit = .ListItems(i).SubItems(1)
                    sDes = .ListItems(i).SubItems(2)
                    sAvePrice = .ListItems(i).SubItems(3)
                    sLastestPrice = .ListItems(i).SubItems(4)
                    sStandPrice = .ListItems(i).SubItems(5)
                End With
                
                lPos = InStr(1, sDes, sCompare)
                
                If lPos > 0 Then

                    'Dua du lieu ra lvLuu
                    Set It = Me.lvLuu.ListItems.ADD()
                    With It
                        .Text = sItemCode
                        .SubItems(1) = sUnit
                        .SubItems(2) = sDes
                        .SubItems(3) = sAvePrice
                        .SubItems(4) = sLastestPrice
                        .SubItems(5) = sStandPrice
                    End With
                End If
            Next i
            'Xuat tro lai
            'Xoa truoc
            lItems = Me.lvLuu.ListItems.Count
            If lItems >= 1 Then
                'Chi xoa khi nao loc co ma thoi
                Me.LvMaSanPham.ListItems.Clear
            End If
            
            For i = 1 To lItems
                With Me.lvLuu
                    sItemCode = .ListItems(i).Text
                    sUnit = .ListItems(i).SubItems(1)
                    sDes = .ListItems(i).SubItems(2)
                    sAvePrice = .ListItems(i).SubItems(3)
                    sLastestPrice = .ListItems(i).SubItems(4)
                    sStandPrice = .ListItems(i).SubItems(5)
                End With
                
                'Dua du lieu ra lvLuu
                Set It = Me.LvMaSanPham.ListItems.ADD()
                With It
                    .Text = sItemCode
                    .SubItems(1) = sUnit
                    .SubItems(2) = sDes
                    .SubItems(3) = sAvePrice
                    .SubItems(4) = sLastestPrice
                    .SubItems(5) = sStandPrice
                End With
            Next i

        End If
    End If

ErrorExit:
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = True
        .StatusBar = False
    End With
    Exit Sub

cmdFilter_Click_Error:
    If bCentralErrorHandler("frmFilter", "cmdFilter_Click", , False) Then
        Stop
        Resume
    Else
        Resume ErrorExit
    End If


End Sub
Đây là đoạn code bạn có thể tham khảo.
Nó sẽ lọc và đưa tạm ra một listview khác. Sau đó đưa trở lại listview ban đầu.
Bạn có thể tham khảo File trợ giúp nhập liệu của tôi trên diễn đàn.

Chúc bạn thành công.

LVD
From ManhHung12:
File ở đau vậy LVD. Tôi muốn đươc tham khảo. Xin giúp đỡ
 
Upvote 0
Chào Bác Manhhung12
File Trợ giúp nhập liệu của Anh Duyệt trên bàn phím ạh, --=0 Đùa bác chút thôi, em cũng phải kiếm file của Anh Duyệt từ bàn phím cho bác đấy ạh.
Bác vào đây coi nhé KEYBOARD
 
Upvote 0
To: Bác MH
Ý của Bác là Nhập dữ liệu vào textbox -> Listview(tạm thời)-> vào database(sheet) đúng không ạh.
Được chứ Bác. Bác chịu khó cày GPE 1 chút, rồi cày máy tính chút là ra thôi. Còn khúc mắc chỗ nào bác cứ hỏi.
Em sẽ giúp Bác tận tình ;;;;;;;;;;;
 
Lần chỉnh sửa cuối:
Upvote 0
Nó sẽ lọc và đưa tạm ra một listview khác. Sau đó đưa trở lại listview ban đầu.
Bạn có thể tham khảo File trợ giúp nhập liệu của tôi trên diễn đàn.

Chúc bạn thành công.

LVD

Như vậy trên Form phải có thêm 1 Listview nữa có nhiệm vụ làm Listview nguồn phải không bác ???

Thân!
 
Upvote 0
To: Bác MH
Ý của Bác là Nhập dữ liệu vào textbox -> Listview(tạm thời)-> vào database(sheet) đúng không ạh.
Được chứ Bác. Bác chịu khó cày GPE 1 chút, rồi cày máy tính chút là ra thôi. Còn khúc mắc chỗ nào bác cứ hỏi.
Em sẽ giúp Bác tận tình ;;;;;;;;;;;
Đúng vậy. Cũng tập tành làm cho vui. Cũng kg nghĩ là phải cày cuốc. Thấy có thì xin. Thế bạn đang giúp tôi tận tình ???
 
Upvote 0
các bạn cho mình hỏi khi thêm dữ liệu vào listview từ một textbox thì 1 colum trong listview là stt thì có các chỉ số tự tăng . thì làm như thế nào?
 
Upvote 0
các bạn cho mình hỏi khi thêm dữ liệu vào listview từ một textbox thì 1 colum trong listview là stt thì có các chỉ số tự tăng . thì làm như thế nào?

Bạn có thể dựa vào property LV.ListItems.Count để làm số đếm. Tuy nhiên cũng cẩn thận khi xóa đi một ListItem thì STT sẽ có thể bị trùng. Nếu STT chỉ là hình thức thì sau khi xóa một ListItem thì chạy một vòng For..Next gán lại STT.
 
Upvote 0
các bạn cho mình hỏi khi thêm dữ liệu vào listview từ một textbox thì 1 colum trong listview là stt thì có các chỉ số tự tăng . thì làm như thế nào?
Đúng như bác TuanVNUNI nói đấy
Mình thường dùng thế này: Khi có sự thay đổi của số thứ tự (Thêm, chèn, xóa, đổi chỗ . . ) thì sẽ chạy Sub sau :

PHP:
Sub TaoID(LVAll As ListView)
'' Sub nay de lam moi lai ID cua ListView
    Dim i As Integer
    For i = 1 To LVAll.ListItems.Count
        LVAll.ListItems.Item(i) = Format(i, "000")
    Next
End Sub
VD Listview đó có Code Name là LV, lệnh chạy sẽ là :

PHP:
Call TaoID(Me.LV)
Chúc vui
 
Upvote 0
Web KT

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

Back
Top Bottom