Iskanje in filtriranje vozlišč
Poiščite vozlišča po besedilu, izbirajte jih eno za drugim in drevo omejite na vozlišča, ki ustrezajo pogoju.
Zahteva WKL Forms Object Library 1.23 ali novejšo različico.
Pregled rešitve
SearchText poudari vsako vozlišče, katerega besedilo vsebuje iskano besedilo, FindNext pa
izbira ujemanja; uporabniki dosežejo enako z vrstico za iskanje (Ctrl+F, AllowSearch). Filter
skrije vsa vozlišča razen ujemanj pogoja WHERE ali izraza JPath in njihovih prednikov.
SelectNode in NodeExists poiščeta posamezno vozlišče po poti.
Izvedba
With Me!Tree1.Object
.SearchText = "ja" ' highlights matches, loaded or not
Debug.Print .SearchCount & " matches"
.FindNext ' selects the next match; .FindNext True: previous
.SearchText = "" ' ends the search
.Filter = "Aktivno = True" ' WHERE condition of the record source, like Form.Filter
.Filter = "$..[?(@.Checked == true)]" ' or JPath over the loaded nodes
.Filter = "" ' shows everything, view as before the filter
If .NodeExists("Evropa\Slovenija") Then .SelectNode "Evropa\Slovenija"
Debug.Print UBound(.FindNodes("$..[?(@.Level == 2)]")) + 1 & " nodes on level 2"
End With
Opombe
- Iskanje prešteje največ 1.000 ujemanj. Poizveduje po viru zapisov (
LIKE '*text*'nadTextField), razen če je naloženo celotno drevo (LazyLoad = FalsealiGroupFields); tedaj pregleda naložena vozlišča. - Filter WHERE poizveduje po viru zapisov vsakič, ko ga nastavite; pri prepustni poizvedbi se celotna poizvedba izvede na strežniku.
- Besedilne poti se primerjajo brez razlikovanja velikih in malih črk ter uporabljajo
PathSeparator(privzeto poševnica nazaj). ZLazyLoadse naložijo le ravni vzdolž poti. - JPath se izvaja nad pogledom JSON, v katerem ima vsako vozlišče
Key,Text,ParentKey,Image,SortValue,Checked,LevelinNodes;FindNodesnajprej naloži celotno drevo. - V vrstici za iskanje se s F3 in Shift+F3 premikate med ujemanji, Enter izbere naslednje, Samo ujemanja pa filtrira na ujemanja.
Sorodne teme
sl/wiki/msaccess/comctl/how-to/search-and-filter.txt · Last modified: by Wolfgang van der Stille