Dokumentacja HotXLS

Natywne pola obliczeniowe tabel przestawnych i elementy należące do pamięci podręcznej

Obliczanie z sum kontekstowych

Dla lokalnego obliczeniowego pola pamięci podręcznej natywny podgląd najpierw sumuje każde referencjonowane pole bazodanowe w żądanym kontekście liścia, sumy częściowej albo sumy całkowitej, a potem ewaluuje formułę; zależności mogą nie występować wśród wyświetlanych pól danych

Np. dwa rekordy z wartościami Amount/Units równymi 10/1 i 30/9 dają natywny wynik pola obliczeniowego 40/10 = 4, a suma całkowita ewaluuje własne sumy zależności zamiast dodawać wyświetlane ilorazy

Elementy obliczeniowe ewaluuje odwołania do elementów w każdym pełnym kontekście liścia, łącznie z pozostałymi osiami wierszy i kolumn; sumy częściowe i całkowite obejmują wynikające wkłady elementów, więc element-iloraz może wnieść sumę swoich ilorazów liściastych

Ręcznie ukryty element pozostaje dostępny, gdy inny element obliczeniowy się do niego odwołuje, a jego własny wkład pozostaje poza wyświetlanymi sumami; dla A=40 i B=60 ukrycie A nadal daje Combined=A+B wartość 100 i włącza Combined do widocznej sumy całkowitej

Gdy pola i elementy obliczeniowe współistnieją, wkłady elementów najpierw aktualizują sumy referencjonowanych pól bazodanowych, a potem pole obliczeniowe ewaluuje te zaktualizowane sumy kontekstowe

Elementy obliczeniowe mogą należeć do kilku pól niespogrupowanych; zachowana kolejność definicji pamięci podręcznej decyduje, która formuła pola zapisuje przecięcie ostatnie, więc przeniesienie definicji potrafi zmienić i to przecięcie, i wyświetlane sumy

Nierozwiązana zależność elementu obliczeniowego ewaluuje w chwili referencjonowania, łącznie z zależnością zdefiniowaną później w tej kolejności; element już obliczony we wcześniejszym kroku zachowuje swoją bieżącą wartość przecięcia, gdy inna formuła się do niego odwołuje

Natywne sumy pól ignorują źródłowe wartości Boolean i tekstowe, zachowują wartości liczbowe i datowe oraz propagują typowane błędy źródłowe; leniwe IF i IFERROR potrafią obsłużyć błąd bez ewaluowania nieużywanej gałęzi

Własność pamięci podręcznej i wiązanie

Deklaracja publicznaKontrakt
TXLSPivotCacheCalculatedItemDefinicja natywnego elementu obliczeniowego należąca do pamięci podręcznej; uzyskaj ją przez posiadającą pamięć podręczną i trzymaj pamięć podręczną przy życiu podczas korzystania z pożyczonego obiektu
TXLSPivotCacheCalculatedItem.FieldIndex: IntegerTylko do odczytu: tożsamość pola pamięci podręcznej numerowana od zera
TXLSPivotCacheCalculatedItem.ItemIndex: IntegerTylko do odczytu: tożsamość elementu współdzielonego numerowana od zera w ramach FieldIndex
TXLSPivotCacheCalculatedItem.Formula: WideStringFormuła elementu natywnego do odczytu i zapisu; ustawienie jej zmienia model, podczas gdy podgląd albo jawne wiązanie waliduje składnię i cykle zależności przed obliczeniem
TXLSPivotCacheCalculatedItem.Supported: BooleanTylko do odczytu: dostępność sparsowanej tożsamości obszaru, a nie gwarancja, że każda kombinacja formuły i widoku da się obliczyć
TXLSPivotCacheCalculatedItem.RawXml: WideStringTylko do odczytu: zachowany XML dla nieobsługiwanej definicji elementu obliczeniowego; znane typowane definicje używają pustego ciągu
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItemTworzy obsługiwaną typowaną definicję dla istniejącego elementu, odrzucając nieprawidłowe tożsamości, pustą formułę lub zduplikowaną tożsamość celu; zwrócony obiekt należy do pamięci podręcznej
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItemZwraca pożyczoną pasującą definicję albo nil
TXLSPivotCache.CalculatedItemCount: IntegerTylko do odczytu: liczba zachowanych definicji obsługiwanych i nieobsługiwanych
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItemTylko do odczytu: pożyczony dostęp numerowany od zera do listy definicji
TXLSPivotCache.ClearCalculatedItemsZwalnia posiadane definicje i unieważnia pożyczone uchwyty; nie usuwa elementów współdzielonych ani nie ustanawia kompletności zapytań pamięci podręcznej
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer)Przenosi istniejącą definicję między pozycjami numerowanymi od zera w natywnej kolejności rozwiązywania, zachowując tożsamość pożyczonego obiektu; nieprawidłowe pozycje podnoszą EArgumentOutOfRangeException bez przenoszenia definicji
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString)Hak zachowania zorientowany na parser, który przechowuje nieznany XML i oznacza model zapytań pamięci podręcznej jako niekompletny
TXLSPivotCache.Assign(Source: TXLSPivotCache)Kopiuje w głąb definicje, pola, elementy współdzielone, indeksy rekordów i kontekst systemu dat; uchwyty źródła pozostają niezależne, a przypisanie tej samej pamięci podręcznej do siebie jest bezpieczne
TXLSPivotTable.BindCalculatedItemsToCacheWaliduje i wiąże elementy obliczeniowe napisane w widoku na odłączonej pamięci podręcznej, po czym dołącza nowe elementy współdzielone i definicje do żywej pamięci podręcznej; błędy pozostawiają tożsamości elementów i definicje bez zmian, a istniejące uchwyty pól i elementów pozostają ważne

Element napisany w widoku przez TXLSPivotField.AddCalculatedItem wymaga jawnego BindCalculatedItemsToCache przed natywną materializacją albo typowaną natywną rekonstrukcją; import obsługiwanej natywnej definicji pamięci podręcznej już dostarcza tę własność

Wiązanie pamięci podręcznej wpływa na każdy widok dzielący tę pamięć podręczną, więc wywołuj je jako operację autorską i trzymaj pożyczone uchwyty tylko do wyczyszczenia, przypisania albo zniszczenia odpowiadającej listy

Filtry elementów i transformacje wyświetlania

Porównania podpisów i wartości na polu elementów obliczeniowych wybierają wyświetlane elementy po uruchomieniu formuł elementów; odfiltrowane elementy źródłowe pozostają dostępne dla referencjonowanych formuł, a widoczne sumy częściowe i całkowite wykluczają bezpośrednie wkłady tych elementów

Porównanie wartości może wybrać obliczeniową miarę; każdy kandydacki element ewaluuje tę miarę ze swoich sum zależności kontekstowych, zamiast dodawać ilorazy rekordów źródłowych albo traktować formułę jako kolumnę rekordu pamięci podręcznej

Wyniki elementów obliczeniowych obsługują też modelowane transformacje ShowDataAs, łącznie z procentami, indeksem, różnicami, sumami narastającymi, procentami sum narastających i rangami; ukryte elementy pozostają poza widocznymi sekwencjami narastania i rang, podczas gdy odwołania formuł zachowują swoje pierwotne wartości

Deklaracja publicznaKontrakt
TXLSPivotFilter.DataFieldIsMeasureIndex: BooleanWybiera dziedzinę tożsamości DataField; False zachowuje istniejącą tożsamość pola pamięci podręcznej numerowaną od zera, a True wskazuje pozycję wyświetlanej miary danych numerowaną od zera i jest ustawiane przy imporcie natywnego iMeasureFld
TXLSPivotFilter.SourceOrder: IntegerGlobalna kolejność numerowana od zera do odczytu i zapisu, zachowana z natywnego elementu filters, domyślnie -1 przy braku; lokalne obliczenia i typowany zapis używają najpierw nieujemnego EvalOrder, potem SourceOrder, a na końcu stabilnej kolejności pola/listy

Typowany natywny zapis konwertuje tożsamość pola pamięci podręcznej na jego wyświetlaną pozycję miary; pole pamięci podręcznej używane przez wiele miar danych wymaga jawnej pozycji miary, bo inaczej jego agregacja i tożsamość wyświetlania byłyby dwuznaczne

Excel potrafi zapisywać aktywne filtry z evalOrder=-1, zachowując ich kolejność ewaluacji przez sekwencję elementu filters; import, klonowanie i typowana rekonstrukcja zachowują tę sekwencję zamiast traktować te filtry jako nieaktywne

Zmiana definicji filtra albo jego zachowanej pozycji źródłowej w zaimportowanym zachowanym natywnym widoku wymaga typowanej rekonstrukcji; zwykła natywna adopcja waliduje zachowaną tożsamość filtra i odrzuca nieobsługiwane edycje przed zapisem komórek raportu

Podgląd, zapytania i systemy dat

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 z AUseNativeGrandTotals=True korzysta z odłączonej tabeli i pamięci podręcznej, łącznie z dokładnymi natywnymi sumami i tożsamościami elementów obliczeniowych; zwykłe Make i domyślny MakePreview zachowują dotychczasowe obliczenia oparte na rekordach

GetDataValue używa natywnych sum kontekstowych, gdy pamięć podręczna ma pola albo elementy obliczeniowe, a GETPIVOTDATA dzieli tę ścieżkę zapytania; żadna z tych operacji nie odświeża danych źródłowych, nie przelicza badanych formuł arkusza ani nie zapisuje komórek raportu

Deklaracja publicznaKontrakt
TXLSPivotCache.Date1904: BooleanKontekst systemu dat źródła do odczytu i zapisu dla samodzielnych obliczeń natywnych; domyślnie False i wiąże się podczas importu Classic i XLSX, tworzenia pamięci podręcznej arkusza oraz kopiowania pamięci podręcznej XLSX
TXLSPivotDateSystemTypowany wybór systemu dat dla odłączonych natywnych podglądów i zapytań
xlpdsCacheUżyj zachowanego kontekstu Date1904 pamięci podręcznej bez jego zmiany
xlpds1900Projektuj system daty 1900 do odłączonego obliczenia
xlpds1904Projektuj system daty 1904 do odłączonego obliczenia
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): BooleanNiższego poziomu pomocnik natywnego układu przyjmuje ten sam odłączony wybór systemu dat po swoich parametrach wyjściowych ResultXml i Reason
TXLSGetDate1904 = function: Boolean of objectCallback metadanych kalkulatora odczytujący bieżący system dat posiadającego skoroszytu
TXLSCalculator.OnGetDate1904: TXLSGetDate1904Opcjonalny pożyczony callback używany przez GETPIVOTDATA; nil korzysta z kontekstu pamięci podręcznej, a ewaluatory skoroszytu i ich widoki tylko do odczytu dostarczają bieżące ustawienie skoroszytu

Samodzielni wywołujący muszą dostarczyć poprawny kontekst Date1904 pamięci podręcznej albo jawny wybór systemu dat; natywna materializacja i zapytania formuł należące do skoroszytu projektują bieżące ustawienie skoroszytu bez modyfikacji żywej pamięci podręcznej

Źródłowe wartości dat pozostają absolutnymi wartościami TDateTime w pamięci podręcznej, podczas gdy natywne formuły liczbowe korzystają z numerów seryjnych dat Excela; system 1904 odejmuje 1462 dni od każdej wartości daty, a konwersja 1900 obsługuje reprezentowalne daty przed marcem 1900

Własność zapisanego natywnego wyjścia rejestruje swój kontekst systemu dat i porównuje sformatowane wartości dat z ich zserializowanym ładunkiem liczbowym; zapis, ponowne otwarcie albo zmiana bazy dat skoroszytu zachowują legalną własność, podczas gdy zmienione ładunki dat, Boolean, błędów i tekstu nadal odrzucają nadpisanie

Budżety i nieobsługiwane wejścia

Opcjonalny callback TlxPivotQueryBudget otrzymuje przyrosty pracy i bieżący szacunek pamięci, łącznie z proponowanym odłączonym zrzutem i zapisem formuł; False przerywa z EXLSPivotQueryBudget, a wyjątki callbacków propagują się

Szerokości rekordów i tożsamości elementów bazodanowych są sprawdzane przed klonowaniem; kompilacja i ewaluacja formuł obciążają budżet pracy, a obliczenie zachowuje ograniczoną głębokość składni, tekst formuł, dziedziny elementów obliczeniowych i zapis akumulatorów

Planowanie elementów obliczeniowych limituje łączne dziedziny elementów, zapis podpisów i plany pól przed alokacją; natywna ewaluacja elementów i późne skany filtrów agregujących też odrzucają proponowaną pracę powyżej stałych limitów przed wejściem w te skany, a anulowanie budżetu pozostawia żywe maski elementów bez zmian

Parser formuł obsługuje stałe liczbowe, nazwy pól, nazwy w cudzysłowach, nazwy elementów kwalifikowane polem, arytmetykę i porównania, procent oraz ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR i PI; nieznane funkcje, odwołania do komórek, tablice i niezwiązane nazwy są odrzucane zamiast dostarczać zgadywane wartości

Natywne pola obliczeniowe wymagają miar danych SUM i nie mogą być osiami wierszy, kolumn ani stron; elementy obliczeniowe wymagają zachowanych podpisów tekstowych w niespogrupowanych polach pamięci podręcznej, sum częściowych automatycznych albo SUM, miar SUM i obsługiwanej tożsamości obszaru pojedynczego elementu

Nieznane funkcje formuł, niezerowe fieldPosition obszaru, nieznane albo zniekształcone metadane obszaru, dwuznaczne tożsamości miar filtrów oraz wzajemnie aktywne podstawowe i rozszerzone transformacje wyświetlania są odrzucane jawnie; te restrykcje nie zmieniają nieobsługiwanej definicji w zwykły element

Późne filtrowanie agregujące elementów obliczeniowych obsługuje modelowane porównania wartości; starsze warianty filtrów zliczające, procentowe i sumujące oraz niemodelowane metadane Top n wymagają obsługiwanego natywnego modelu wyboru i są odrzucane zamiast zastępstwa porównaniami rekordów źródłowych

Zaimportowane surowe części zachowują nieobsługiwane przyszłe metadane dla zwykłej ochrony roundtrip; lokalne obliczenie, typowana rekonstrukcja i semantyczna ekstrakcja funkcji wymagają dostępnego modelu i nie odświeżają danych źródłowych, by wyprodukować brakujące rekordy pamięci podręcznej

Semantyczne definicje pamięci podręcznej tabel przestawnych obejmują tożsamość i formułę elementu obliczeniowego, kontekst systemu dat i odłączone ograniczone ładunki; niedostępne natywne rozszerzenia pozostają jawnym błędem semantycznym