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