Dokumentacja HotXLS

Wybór Slicerów tabel przestawnych non-OLAP

Wersja 2.384.88 dodaje typowany wybór elementów do zaimportowanych pamięci podręcznych Slicerów tabel przestawnych non-OLAP, które można związać ze zwykłymi lokalnymi polami pamięci podręcznej i ich połączonymi widokami tabel przestawnych

Badanie i zmiana wyboru

SlicerCache := Workbook.SlicerCaches.FindByName('SlicerCategory');
if (SlicerCache = nil) or not SlicerCache.IsNonOlapPivot then
  raise Exception.Create('A non-OLAP Pivot Slicer cache is required');
if SlicerCache.SetSelectedItems([1]) <> 1 then
  raise Exception.Create('Slicer selection could not be changed');

TXLSXSlicerCache.IsNonOlapPivot identyfikuje tabelaryczny kształt tabeli przestawnej; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex i TXLSXSlicerCache.ItemSelected ujawniają sparsowaną listę elementów i wybór

Pozycje listy elementów są numerowane od zera; każde ItemCacheIndex identyfikuje element współdzielony w związanym polu pamięci podręcznej tabeli przestawnej, więc elementy liczbowe, tekstowe, Boolean, datowe, puste i błędowe zachowują odrębne tożsamości nawet przy zgodnych wyświetlanych tekstach

TXLSXSlicerCacheItem przechowuje CacheItemIndex: Integer i Selected: Boolean; TXLSXSlicerCacheItems to jego typ tablicy dynamicznej, podczas gdy pamięć podręczna ujawnia wybór przez właściwości indeksowane tylko do odczytu

TXLSXSlicerCache.SetSelectedItems przyjmuje indeksy elementów współdzielonych i zwraca 1 po sukcesie albo -1 dla powiązań nieobsługiwanych, nieprawidłowych lub niebezpiecznych; pusty wybór jest odrzucany, bo format pliku wymaga co najmniej jednego wybranego elementu

TXLSXSlicerCache.ClearSelection zwraca tę samą konwencję statusu i wybiera wszystkie elementy; usuwa to ograniczenie Slicera, zachowując niezależne restrykcje na innych polach

Widoki współdzielone i istniejące filtry

Wybrane elementy w jednej pamięci podręcznej Slicera tworzą unię; mające zastosowanie pamięci podręczne Slicerów przecinają się dla każdego jawnie połączonego widoku, łącznie z przypadkiem, gdy wybrane pole nie występuje na wyświetlanych osiach tego widoku; wiele UI-widoków Slicerów jednej pamięci podręcznej dzieli ten sam wybór

Wywołaj TXLSPivotTable.Make z pisarzem wyników aplikacji, aby obliczyć bieżące wyniki; zmiany wyboru pamięci podręcznej nie przepisują komórek arkusza ani nie regenerują każdego zaimportowanego natywnego układu

Excel przechowuje wybory Slicerów non-OLAP jako zwykłe ukrywanie elementów tabeli przestawnej i wybór strony; format nie rejestruje, która operacja utworzyła pojedynczą flagę ukrycia

Przed modyfikacją zaimportowanego powiązania HotXLS waliduje, że jego stare maski ukrycia i strony tego samego pola odpowiadają efektywnemu staremu wyborowi Slicera; pasujące maski są traktowane jako zarządzane przez Slicer, podczas gdy niespójne albo dwuznaczne maski są odrzucane bez zgadywania; ręczne, stronicowe i zaawansowane filtry innych pól pozostają aktywne

Zapis i odświeżanie źródła

Zapis aktualizuje wybór Slicera i połączone maski elementów tabeli przestawnej razem, zachowuje zaimportowane przestrzenie nazw XML i nieznane rozszerzenia oraz przemapowuje połączenia arkuszy na ich zapisane tożsamości; rozszerzone identyfikatory pamięci podręcznej Slicerów pozostają odrębne od zwykłych identyfikatorów pamięci podręcznej tabel przestawnych skoroszytu

Lokalne odświeżanie pamięci podręcznej tabel przestawnych zachowuje indeksy wybranych elementów współdzielonych; jawne podzbiory wykluczają nowe elementy, podczas gdy wyczyszczone wybory dopuszczają pełną odświeżoną dziedzinę

Granice i zachowanie przy błędach

Zmiany wyboru walidują wszystkie połączone widoki i elementy przed zatwierdzeniem oraz korzystają ze strażnika mutacji skoroszytu; błąd zachowuje istniejący wybór, restrykcje widoku i pierwotny XML

Dodawanie, usuwanie i czyszczenie pamięci podręcznych Slicerów też korzysta ze strażnika zapisu skoroszytu; zamrożony widok skoroszytu nie potrafi zmienić połączonych wyników tabel przestawnych przez mutację kolekcji

Usunięcie związanej pamięci podręcznej tabel przestawnych non-OLAP albo wyczyszczenie kolekcji ją zawierającej jest odrzucane przed mutacją; jawna operacja cyklu życia RemoveSlicerCache usuwa jej natywne widoki i albo czyści, albo przenosi jej wybór do zwykłych masek tabel przestawnych

Wybór OLAP i pamięci podręcznej tabeli, pogrupowane albo obliczeniowe pola źródłowe, brakujące połączenia, niespójne dziedziny i dwuznaczne zaimportowane maski tego samego pola pozostają poza tą operacją; nieobsługiwana treść pamięci podręcznej zachowuje swoją pierwotną reprezentację

To API wyboru obsługuje zaimportowane i obsługiwane autorskie pamięci podręczne Slicerów tabel przestawnych; autorstwo widoków współdzielonych i jawne usuwanie pamięci podręcznej jest dostępne od 2.384.94; bezpieczna materializacja arkusza potrafi zastąpić obsługiwane obliczone wyjście, podczas gdy ewaluacja wyświetlania braku danych cross-filter pozostaje osobną pracą

Usunięcie ostatniego widoku UI związanej pamięci podręcznej non-OLAP jest odrzucane przed zmianą jej rysunku, widoku albo pamięci podręcznej; usunięcie jednego z kilku widoków UI zachowuje ich współdzieloną pamięć podręczną i wybór

Czyszczenie widoków Slicerów arkusza sprawdza każdą dotkniętą pamięć podręczną przed usunięciem jakiegokolwiek widoku; ostateczny związany widok powoduje atomowe odrzucenie, podczas gdy widoki współdzielone z innymi arkuszami zachowują swoją pamięć podręczną i wybór

Dodatkowe filtry rekordów

TlxPivotRecordFilter = function(ATable: TXLSPivotTable;
  ARecordIndex: Integer): Boolean of object;
procedure TXLSPivotTable.SetRecordFilter(AOwner: TObject;
  AFilter: TlxPivotRecordFilter);
procedure TXLSPivotTable.ClearRecordFilter(AOwner: TObject);
property TXLSPivotTable.ExternalRecordFilter: TlxPivotRecordFilter;

TXLSPivotTable.SetRecordFilter rejestruje albo zastępuje jeden callback na nie-nilowego właściciela, a TXLSPivotTable.ClearRecordFilter usuwa callback tego właściciela; przekazanie nilowego callbacka do SetRecordFilter też go usuwa

Zarejestrowane callbacki i opcjonalny TXLSPivotTable.ExternalRecordFilter przecinają się przed filtrami i agregacją samej tabeli; skoroszyt rejestruje swój callback Slicera niezależnie, więc nie nadpisuje predykatu wywołującego

Callbacki otrzymują indeksy rekordów numerowane od zera, są migawkowane dla każdego wywołania Make i nie są serializowane ani kopiowane przez AssignPivotOnly; właściciele i cele callbacków pozostają własnością wywołującego i muszą istnieć dłużej niż ich rejestracja