Dokumentace HotXLS

Nativní počítaná pole kontingenčních tabulek a položky vlastněné mezipamětí

Výpočet ze součtů kontextu

U lokálního počítaného pole mezipaměti seštuje nativní náhled nejdřív každé odkazované databázové pole v požadovaném kontextu listu, mezisoučtu nebo celkového součtu a teprve potom vyhodnotí vzorec; závislosti mohou v zobrazených datových polích chybět

Například dva záznamy s hodnotami Amount/Units 10/1 a 30/9 produkují v nativním počítaném poli výsledek 40/10 = 4 a celkový součet vyhodnotí vlastní součty závislostí, místo aby sčítal zobrazené podíly

Počítané položky vyhodnocují odkazy na členy v každém kompletním kontextu listu, včetně ostatních os řádků a sloupců; mezisoučty i celkové součty zahrnují výsledné příspěvky členů, takže položka-podíl může přispět součtem svých listových podílů

Ručně skrytý člen zůstane dostupný, když na něj odkazuje jiná počítaná položka, zatímco jeho vlastní příspěvek zůstane mimo zobrazené součty; pro A=40 a B=60 dává skrytí A hodnotě Combined=A+B stále 100 a Combined se zahrne do viditelného celkového součtu

Když spolu koexistují počítaná pole i položky, nejdřív aktualizují příspěvky položek součty odkazovaných databázových polí a teprve potom vyhodnotí počítané pole tyto aktualizované kontextové součty

Počítané položky mohou patřit k několika neseskupeným polům; zachované pořadí definic v mezipaměti rozhoduje, který vzorec pole zapíše průnik naposledy, takže posun definice může změnit i daný průnik a zobrazené součty

Neresolvovaná závislost počítaného členu se vyhodnotí, když je odkazována, včetně závislosti definované později v tomto pořadí; člen už vypočtený v dřívějším kroku si při odkazu jiným vzorcem ponechá svou aktuální hodnotu průniku

Nativní součty polí ignorují logické a textové zdrojové hodnoty, zachovávají numerické a datumové hodnoty a propagují typované zdrojové chyby; líné IF a IFERROR zvládnou chybu bez vyhodnocení nepoužité větve

Vlastnictví mezipaměti a vazba

Veřejná deklaraceKontrakt
TXLSPivotCacheCalculatedItemNativní definice počítaného členu vlastněná mezipamětí; získejte ji přes vlastnící mezipaměť a při práci s vypůjčeným objektem udržujte mezipaměť naživu
TXLSPivotCacheCalculatedItem.FieldIndex: IntegerIdentita pole mezipaměti jen pro čtení, číslovaná od nuly
TXLSPivotCacheCalculatedItem.ItemIndex: IntegerIdentita sdíleného členu jen pro čtení, číslovaná od nuly uvnitř FieldIndex
TXLSPivotCacheCalculatedItem.Formula: WideStringNativní vzorec členu pro čtení i zápis; nastavení změní model, zatímco náhled nebo explicitní vazba validuje syntaxi i cykly závislostí před výpočtem
TXLSPivotCacheCalculatedItem.Supported: BooleanDostupnost parsované identity oblasti jen pro čtení, nikoli záruka, že se každá kombinace vzorce a zobrazení dá vyhodnotit
TXLSPivotCacheCalculatedItem.RawXml: WideStringXML nepodporované definice počítané položky zachované jen pro čtení; známé typované definice používají prázdný řetězec
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItemVytvoří podporovanou typovanou definici pro existujícího člena a odmítne neplatné identity, prázdný vzorec či duplicitní cílovou identitu; vrácený objekt patří mezipaměti
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItemVrátí vypůjčenou odpovídající definici nebo nil
TXLSPivotCache.CalculatedItemCount: IntegerPočet zachovaných podporovaných i nepodporovaných definic, jen pro čtení
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItemVypůjčený přístup k seznamu definic jen pro čtení, číslovaný od nuly
TXLSPivotCache.ClearCalculatedItemsUvolní vlastněné definice a zneplatní vypůjčené handlery; neodstraní sdílené členy a nenastaví úplnost dotazu mezipaměti
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer)Přesune existující definici mezi pozicemi číslovanými od nuly v nativním pořadí řešení, se zachováním identity vypůjčeného objektu; neplatné pozice vyvolají EArgumentOutOfRangeException, aniž by se definice pohnuly
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString)Hook pro zachování orientovaný na parser, který si uchová neznámé XML a označí model dotazu mezipaměti za neúplný
TXLSPivotCache.Assign(Source: TXLSPivotCache)Zkopíruje do hloubky definice, pole, sdílené členy, indexy záznamů i kontext datumového systému; handlery zdroje zůstanou nezávislé a přiřazení téže mezipaměti sama sobě je bezpečné
TXLSPivotTable.BindCalculatedItemsToCacheValiduje a sváže autorské počítané položky zobrazení na oddělenou mezipaměť, pak připojí nové sdílené členy a definice k živé mezipaměti; selhání ponechá identity členů a definice beze změny a stávající handlery polí i členů zůstanou platné

Položka vytvořená autorsky přes TXLSPivotField.AddCalculatedItem potřebuje před nativní materializací nebo typovanou nativní rekonstrukcí explicitní BindCalculatedItemsToCache; import podporované nativní definice mezipaměti toto vlastnictví dodá sám

Vazba na mezipaměť ovlivní každé zobrazení sdílející tu mezipaměť, takže ji volejte jako autorskou operaci a vypůjčené handlery si udržujte jen do vymazání, přiřazení nebo zničení odpovídajícího seznamu

Filtry členů a transformace zobrazení

Porovnání titulků a hodnot na poli počítaných položek vyberou zobrazené členy až po běhu vzorců členů; filtrované zdrojové členy zůstanou dostupné odkazovaným vzorcům a viditelné mezisoučty a celkové součty vyloučí jejich přímé příspěvky

Porovnání hodnoty může vybrat počítanou míru; každý kandidátní člen tuto míru vyhodnotí ze součtů závislostí svého kontextu, místo aby sčítal podíly zdrojových záznamů nebo bral vzorec jako sloupec záznamu mezipaměti

Výsledky počítaných položek podporují i modelované transformace ShowDataAs, včetně procent, indexu, rozdílů, průběžných součtů, procent průběžných součtů a pořadí; skryté členy zůstávají mimo viditelné průběžné pořadí i pořadí rank, zatímco odkazy ve vzorcích si ponechají původní hodnoty

Veřejná deklaraceKontrakt
TXLSPivotFilter.DataFieldIsMeasureIndex: BooleanVybírá identitní doménu DataField; False zachová stávající identitu pole mezipaměti od nuly, True identifikuje pozici zobrazené datové míry od nuly a nastavuje se při importu nativního iMeasureFld
TXLSPivotFilter.SourceOrder: IntegerGlobální pořadí od nuly pro čtení i zápis, zachované z nativního elementu filtrů, s výchozí hodnotou -1 při absenci; lokální výpočet a typovaný zápis používají nejdřív nezáporné EvalOrder, pak SourceOrder a nakonec stabilní pořadí pole/seznamu

Typovaný nativní zápis převede identitu pole mezipaměti na pozici jeho zobrazené míry; pole mezipaměti používané více datovými mírami potřebuje explicitní pozici míry, protože jeho agregační a zobrazovací identita by jinak byla dvojznačná

Excel umí uložit aktivní filtry s evalOrder=-1, se zachováním jejich vyhodnocovacího pořadí skrze sekvenci elementu filtrů; import, klonování i typovaná rekonstrukce si tuto sekvenci ponechají, místo aby tyto filtry braly jako neaktivní

Změna definice filtru nebo jeho zachované zdrojové pozice na importovaném zachovaném nativním zobrazení vyžaduje typovanou rekonstrukci; obyčejná nativní adopce validuje zachovanou identitu filtru a nepodporované úpravy odmítne dřív, než dojde na zápis buněk sestavy

Náhled, dotazy a datumové systémy

function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter;
  ALayoutWriter: TlxPivotLayoutWriter;
  AUseNativeGrandTotals: Boolean = False;
  ABudget: TlxPivotQueryBudget = nil;
  ADateSystem: TXLSPivotDateSystem = xlpdsCache): Integer;

function TXLSPivotTable.GetDataValue(const ADataField: WideString;
  const AConstraints: TXLSPivotDataConstraints;
  ABudget: TlxPivotQueryBudget; out AValue: Variant;
  ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean;

MakePreview s AUseNativeGrandTotals=True použije oddělenou tabulku a mezipaměť, včetně přesných nativních součtů a identit počítaných položek; obyčejné Make a výchozí MakePreview si ponechají stávající chování výpočtu ze záznamů

GetDataValue používá nativní kontextové součty, když mezipaměť má počítaná pole nebo položky, a GETPIVOTDATA sdílí tuto dotazovací cestu; ani jedna operace neaktualizuje zdrojová data, nepřepočítá zkoumané vzorce listu a nezapisuje buňky sestavy

Veřejná deklaraceKontrakt
TXLSPivotCache.Date1904: BooleanKontext zdrojového datumového systému pro samostatné nativní výpočty, ke čtení i zápisu; výchozí hodnota je False a váže se při importu Classic a XLSX, při tvorbě mezipaměti listu i při kopírování mezipaměti XLSX
TXLSPivotDateSystemTypovaná volba datumového systému pro oddělené nativní náhledy a dotazy
xlpdsCachePoužije zachovaný kontext Date1904 mezipaměti, aniž by jej změnila
xlpds1900Promítne datumový systém 1900 do odděleného výpočtu
xlpds1904Promítne datumový systém 1904 do odděleného výpočtu
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): BooleanNižší úroveň pomocníka nativního rozvržení přijme tutéž oddělenou volbu datumového systému za svými výstupními parametry ResultXml a Reason
TXLSGetDate1904 = function: Boolean of objectZpětné volání metadat kalkulátoru, které přečte aktuální datumový systém vlastnícího sešitu
TXLSCalculator.OnGetDate1904: TXLSGetDate1904Volitelné vypůjčené zpětné volání používané GETPIVOTDATA; nil použije kontext mezipaměti, zatímco vyhodnocovače sešitu a jejich zobrazení jen pro čtení dodají aktuální nastavení sešitu

Samostatní volající musí dodávat správný kontext Date1904 mezipaměti nebo explicitní volbu datumového systému; nativní materializace a vzorcové dotazy vlastněné sešitem promítnou aktuální nastavení sešitu, aniž by změnily živou mezipaměť

Datumové zdrojové hodnoty zůstávají v mezipaměti absolutními hodnotami TDateTime, zatímco nativní numerické vzorce používají excelová serialní čísla dat; systém 1904 odečítá u každé hodnoty data 1462 dní a konverze 1900 zvládne reprezentovatelná data před březnem 1900

Vlastnictví uloženého nativního výstupu si zaznamená kontext datumového systému a porovnává stylizované datumové hodnoty vůči jejich serializovanému numerickému payloadu; ukládání, opětovné otevření i změna datumového základu sešitu legitimní vlastnictví zachovají, zatímco změněné datumové, logické, chybové i textové payloady přepis stále odmítnou

Rozpočty a nepodporovaný vstup

Volitelné zpětné volání TlxPivotQueryBudget dostává přírůstky práce a aktuální odhad paměti, včetně navrhovaného odděleného snímku a úložiště vzorců; False přeruší s EXLSPivotQueryBudget a výjimky zpětných volání se propagují

Šířky záznamů a identity databázových členů se kontrolují před klonováním; kompilace a vyhodnocování vzorců účtuje práci a výpočet si drží ohraničenou hloubku syntaxe, text vzorců, domény počítaných členů i úložiště akumulátorů

Plánování počítaných položek omezuje kombinované domény členů, úložiště titulků a plány polí před alokací; nativní vyhodnocování členů i pozdější skeny agregovaných filtrů odmítnou navrhovanou práci nad svými fixními limity dřív, než do nich vstoupí, a zrušení rozpočtu ponechá živé masky členů beze změny

Parser vzorců podporuje numerické konstanty, názvy polí, názvy v uvozovkách, názvy členů kvalifikované polem, aritmetiku a porovnání, procento a ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR a PI; neznámé funkce, odkazy na buňky, pole i nevázané názvy se odmítnou, místo aby dodaly odhadnuté hodnoty

Nativní počítaná pole vyžadují datové míry SUM a nemohou být osami řádků, sloupců ani stránek; počítané položky vyžadují zachované řetězcové titulky v neseskupených polích mezipaměti, automatické nebo SUM mezisoučty, míry SUM a podporovanou identitu oblasti s jedním členem

Neznámé funkce vzorců, nenulové fieldPosition oblasti, neznámá či poškozená metadata oblastí, dvojznačné identity měr ve filtrech a vzájemně aktivní základní i rozšířené transformace zobrazení se odmítnou výslovně; tato omezení nepřevedou nepodporovanou definici na obyčejnou položku

Pozdní filtrování agregátů počítaných členů podporuje modelovaná porovnání hodnot; starší varianty filtrů počtu, procenta a součtu a nemodelovaná metadata Top n vyžadují podporovaný nativní model výběru a odmítnou se, místo aby nahradily porovnání zdrojových záznamů

Importované surové části si pro obyčejné roundtrip zachování ponechávají nepodporovaná future metadata; lokální výpočet, typovaná rekonstrukce i extrakce sémantických funkcí vyžadují dostupný model a neaktualizují zdrojová data, aby vyrobily chybějící záznamy mezipaměti

Sémantické definice mezipaměti kontingenčních tabulek zahrnují identitu a vzorec počítané položky, kontext datumového systému a oddělené ohraničené payloady; nedostupné nativní rozšíření zůstává výslovnou sémantickou chybou