Dokumentace HotXLS

Výběr v Pivot Sliceru pro data mimo OLAP

Verze 2.384.88 přidává typovaný výběr členů do importovaných mezipamětí Pivot Slicerů pro data mimo OLAP, které lze navázat na obyčejná lokální pole mezipaměti a jejich připojená zobrazení kontingenčních tabulek

Prozkoumání a změna výběru

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 identifikuje tabulkový tvar kontingenční tabulky; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex a TXLSXSlicerCache.ItemSelected zpřístupňují parsovaný seznam členů a výběr

Pozice v seznamu členů jsou číslované od nuly; každý ItemCacheIndex identifikuje sdíleného člena v vázaném poli mezipaměti kontingenční tabulky, takže číselné, textové, logické, datumové, prázdné i chybové členy si drží odlišené identity, i když se jejich zobrazený text shoduje

TXLSXSlicerCacheItem uchovává CacheItemIndex: Integer a Selected: Boolean; TXLSXSlicerCacheItems je jeho typ dynamického pole, zatímco mezipaměť zpřístupňuje výběr skrze indexované vlastnosti jen pro čtení

TXLSXSlicerCache.SetSelectedItems bere indexy sdílených členů a vrací 1 při úspěchu nebo -1 pro nepodporované, neplatné či nebezpečné vazby; prázdný výběr se odmítne, protože formát souboru vyžaduje alespoň jednoho vybraného člena

TXLSXSlicerCache.ClearSelection vrací stejnou konvenci stavů a vybere všechny členy; odstraní omezení tohoto Sliceru, zatímco nezávislá omezení ostatních polí zachová

Sdílená zobrazení a stávající filtry

Vybraní členové v rámci jedné Slicer mezipaměti tvoří sjednocení; příslušné Slicer mezipaměti se pro každé explicitně připojené zobrazení protínají, včetně případů, kdy vybrané pole v zobrazených osách chybí; více UI Slicer zobrazení jedné mezipaměti sdílí tentýž výběr

Voláním TXLSPivotTable.Make s aplikačním zapisovačem výsledků spočítáte aktuální výsledky; změny výběru mezipaměti nepřepisují buňky listu a negenerují znovu každé importované nativní rozvržení

Excel ukládá výběry Slicerů mimo OLAP jako obyčejné skrytí členů kontingenční tabulky a výběry stránek; formát si nezaznamenává, která operace který jednotlivý skrytý příznak vytvořila

Před úpravou importované vazby HotXLS validuje, že její staré masky skrytí a stránek téhož pole odpovídají účinnému starému výběru Sliceru; odpovídající masky se berou jako řízené Slicerem, zatímco nekonzistentní či dvojznačné masky se odmítnou, místo hádání; ruční, stránkové i pokročilé filtry nesouvisejících polí zůstávají aktivní

Ukládání a aktualizace zdroje

Ukládání aktualizuje Slicer výběr a masky připojených členů kontingenční tabulky společně, zachovává importované XML namespaces i neznámá rozšíření a přemapuje připojení listů na jejich uložené identity; rozšířené identifikátory Slicer mezipaměti zůstávají odlišené od obyčejných identifikátorů mezipaměti kontingenčních tabulek sešitu

Lokální aktualizace mezipaměti kontingenční tabulky zachová indexy vybraných sdílených členů; explicitní podmnožiny vyloučí nové členy, zatímco vymazaný výběr umožní kompletní aktualizovanou doménu

Hranice a chování při selhání

Změny výběru validují před potvrzením všechna připojená zobrazení i členy a používají hlídač mutací sešitu; selhání zachová stávající výběr, omezení zobrazení i původní XML

Přidávání, odstraňování i vymazávání Slicer mezipaměti také používá hlídač zápisu sešitu; zamrzlé zobrazení sešitu nedokáže skrze mutaci kolekce změnit výsledky připojených kontingenčních tabulek

Odstranění vázané ne-OLAP mezipaměti kontingenční tabulky, nebo vymazání kolekce, která ji obsahuje, se před mutací odmítne; explicitní operace životního cyklu RemoveSlicerCache odstraní její nativní zobrazení a buď vymaže, nebo převede její výběr na obyčejné masky kontingenční tabulky

Výběr v OLAP a table-cache, seskupená či počítaná zdrojová pole, chybějící připojení, nekonzistentní domény i dvojznačné importované masky téhož pole zůstávají mimo tuto operaci; nepodporovaný obsah mezipaměti si zachová původní reprezentaci

Toto selekční API zpracovává importované i podporované autorské mezipaměti Pivot Slicerů; autorská sdílená zobrazení a explicitní odstranění mezipaměti jsou dostupné od 2.384.94; bezpečná materializace do listu umí vyměnit podporovaný počítaný výstup, zatímco vyhodnocování zobrazení chybějících dat při křížovém filtrování zůstává samostatnou prací

Odstranění posledního UI zobrazení vázané ne-OLAP mezipaměti se před změnou jejího kreslení, zobrazení či mezipaměti odmítne; odstranění jednoho z více UI zobrazení zachová jejich sdílenou mezipaměť a výběr

Vymazání Slicer zobrazení listu zkontroluje každou dotčenou mezipaměť, než odstraní jakékoli zobrazení; poslední vázané zobrazení způsobí atomické odmítnutí, zatímco zobrazení sdílená s jinými listy si zachovají svou mezipaměť a výběr

Dodatečné filtry záznamů

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 zaregistruje nebo nahradí jedno zpětné volání na jednoho nenil vlastníka a TXLSPivotTable.ClearRecordFilter odstraní zpětné volání tohoto vlastníka; předání nil zpětného volání do SetRecordFilter ho také odstraní

Zaregistrovaná zpětná volání a volitelný TXLSPivotTable.ExternalRecordFilter se protínají dřív než vlastní filtry a agregace tabulky; sešit si registruje své Slicer zpětné volání nezávisle, takže nepřepíše predikát volajícího

Zpětná volání dostanou indexy záznamů od nuly, snímkuje se pro každé volání Make a AssignPivotOnly je neserializuje ani nekopíruje; vlastníci i cíle zpětných volání zůstávají majetkem volajícího a musí přežít svou registraci