Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Filtriranje stolpcev drevesnega seznama

Filtriranje stolpcev drevesnega seznama

Uporabnikom omogočite, da vozlišča drevesnega seznama zožijo s pogoji za posamezne stolpce – vnesenimi v vrstico filtra ali izbranimi s seznama vrednosti v glavi stolpca –, iste pogoje pa nastavite tudi iz VBA. Vozlišče, ki ustreza pogojem, ostane na svojem mestu v drevesu.

Zahteva WKL Forms Object Library 1.64 ali novejšo različico.

Pregled rešitve

ShowFilterRow pod glavami stolpcev prikaže vrstico z enim pogojem na stolpec. AllowColumnFilter vsaki glavi stolpca doda lijak, ki odpre seznam vrednosti stolpca, priročnemu meniju glave pa ukaze za filtriranje. ShowFilterBar pod zapisi prikaže aktivne pogoje s stikalom in ukazom „Počisti filter“. FilterIncludesChildren določa, ali ustrezno vozlišče s seboj prinese podrejena vozlišča. V oblikovalniku so te štiri nastavitve v razdelku Filter strani Mreža, združevanje in izvoz.

Iz VBA pogoje nastavite z ColumnFilter in ColumnFilterValues, ColumnFilterEnabled jih začasno izklopi, ClearColumnFilters pa jih odstrani. Lastnosti, metode in dogodki se imenujejo enako kot pri WklGrid.

Izvedba

Private Sub Form_Load()
    With Me!List1.Object
        .ShowFilterRow = True
        .AllowColumnFilter = True
        .ColumnFilter("Baza") = "BikeBuilder"       ' begins with
        .ColumnFilterValues("Izid") = Array("zavrnjeno")
        Debug.Print .ColumnFilterText
    End With
End Sub
 
Private Sub List1_BeforeColumnFilter(ByVal Column As String, ByVal Text As String, Cancel As Integer)
    If Column = "Baza" And Text = "" Then Cancel = True         ' keep this condition
End Sub

Pogoji v vrstici filtra: samo besedilo izbere vrednosti, ki se z njim začnejo (Bike); vzorec z * ali ? (*Builder); samo število ali datum izbere enake vrednosti (100); primerjava (>= 100, <> zavrnjeno); leer (prazno) ali ni prazno. Števila in datumi se berejo v obliki iz področnih nastavitev sistema Windows, brez ločil tisočic.

Opombe

  • Vozlišče, ki izpolni vse pogoje, ostane vidno skupaj z nadrejenimi vozlišči; ta se razširijo, da je vozlišče vidno na svojem mestu. Vsa druga vozlišča so skrita. Z FilterIncludesChildren so prikazana tudi podrejena vozlišča zadetka, tudi tista, ki se naložijo šele ob razširitvi.
  • Filter stolpcev velja poleg filtra Filter. „Samo ujemanja“ v vrstici za iskanje prikaže zadetke med vozlišči, ki jih filter stolpcev pusti.
  • Seznam s sprotnim nalaganjem (LazyLoad) pogoje kot del poizvedbe pošlje viru zapisov, zato najde tudi vozlišča, ki še niso naložena. Pri več kot 1.000 zadetkih enkrat naloži celotno drevo. Seznam, ki hrani vse zapise (LazyLoad izklopljen, GroupFields, Recordset ali datoteka), primerja naložene vrednosti.
  • Vozlišča skupin iz GroupFields nimajo vrednosti polj. Vidna ostanejo kot nadrejena vozlišča zadetkov.
  • Pogoj, ki ne ustreza tipu stolpca, je med vnašanjem prikazan rdeče in ne filtrira; iz VBA sproži wkeInvalidValue. Če vir zapisov pogoj zavrne, filter ostane tak, kot je bil: uporabnik dobi sporočilo o napaki, VBA pa napako wkeSourceError.
  • BeforeColumnFilter in AfterColumnFilter sporočata uporabnikove spremembe v vrstici filtra, seznamu vrednosti, priročnem meniju glave stolpca in vrstici filtrov, ne pa sprememb iz VBA.
  • Z AutoSaveLayout si seznam pogoje zapomni za vsakega uporabnika sistema Windows. Reset jih odstrani.
  • WklGantt podeduje filter stolpcev: časovnica prikazuje ista opravila kot seznam.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/filter-tree-list-columns.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille