Dokumentacja HotXLS

Transakcyjne odświeżanie pamięci podręcznej tabel przestawnych

Wersja 2.384.92 odświeża lokalne źródła tabel przestawnych typu prostokąt, nazwa zdefiniowana i tabela bez zmian w istniejących obiektach pól, obiektach elementów współdzielonych czy logicznych indeksach elementów; wszystkie widoki tabel przestawnych dzielące pamięć podręczną dalej odnoszą się do tych samych elementów

Odświeżanie skoroszytu

Workbook.Recalculate;
if Workbook.RefreshPivotCache(Pivot.CacheId) <> 1 then
  raise Exception.Create('Pivot cache refresh failed');

TXLSXWorkbook.RefreshPivotCache zwraca 1 po udanym odświeżeniu i -1, gdy pamięci podręcznej, źródła, schematu albo wartości źródłowych nie da się odświeżyć; operacja czyta bieżące wartości komórek, więc przy formułach źródłowych wymagających ewaluacji najpierw przelicz skoroszyt

Źródło prostokątne korzysta z istniejącego lokalnego arkusza i wiersza nagłówka; SourceFirstRow, SourceFirstCol, SourceLastRow i SourceLastCol używają współrzędnych włącznych numerowanych od 1, a pierwszy wiersz dostarcza nazw pól

Źródła typu nazwa zdefiniowana i tabela

Gdy SourceIsNamedRange=True, SourceName wskazuje nazwę zdefiniowaną albo unikalną nazwę lub nazwę wyświetlaną tabeli; odświeżenie i materializacja rozwiązują jej bieżącą geometrię przy każdym wywołaniu, zachowując tożsamość źródła zapisaną w pamięci podręcznej

SourceRangeSheet dostarcza kontekst arkusza dla lokalnej nazwy zdefiniowanej; ten zasięg ma pierwszeństwo przed nazwą skoroszytu o tej samej pisowni, a w pozostałych przypadkach rozwiązanie korzysta z zasięgu skoroszytu bez wybierania niepowiązanej nazwy lokalnej

Nazwa zdefiniowana musi zawierać jeden jawny bezwzględny prostokąt kwalifikowany arkuszem; nazwy arkuszy w cudzysłowach i Unicode są obsługiwane, natomiast odwołania względne, unie, aliasy, formuły, odwołania zewnętrzne i dwuznaczne kolizje nazwa/tabela są odrzucane przed mutacją

Tabela musi zachować wiersz nagłówka; rekordy podążają za jej bieżącym zasięgiem i wykluczają rzeczywisty wiersz sum, podczas gdy sprawdzenia kolizji chronią całą tabelę łącznie z wierszem sum; tabela z samym nagłówkiem dostarcza zero rekordów

Przynależność fizycznej sumy podąża za zapisanym totalsRowCount, którego brakująca wartość oznacza zero; sama wskazówka UI sumy nie usuwa wiersza danych, a zapis zapisuje rzeczywistą przynależność wprost

Dla napisanego wiersza sum dostarczaj poprawne metadane sum kolumn i treść arkusza przez ColumnTotalsRowLabels, ColumnTotalsRowFunctions i ColumnTotalsRowFormulas; ustawienie TotalsRowShown=True nie tworzy formuł sum ani nie koercjonuje wartości komórek

Przeniesienia arkuszy zachowują lokalny zasięg nazw, a zmiany nazw arkuszy aktualizują obsługiwane lokalne odwołania i kontekst źródła tabeli przestawnej, zachowując niepowiązane odwołania zewnętrzne i nieprzejrzysty zaimportowany XML pamięci podręcznej; zapis nazw zdefiniowanych usuwa opcjonalny wiodący znak równości formuły bez zmiany formuły w pamięci

Nagłówki pasują do istniejących pól bazodanowych po nazwie bez rozróżniania wielkości liter; zmiana kolejności kolumn źródłowych zachowuje logiczne indeksy pól, podczas gdy zduplikowane, przemianowane, brakujące albo nadmiarowe pola źródłowe są odrzucane; puste nagłówki korzystają z istniejącego fallbacku FieldN

Puste komórki źródłowe pozostają puste i nie są dodawane do kolekcji komórek arkusza; źródła z samym nagłówkiem produkują zero rekordów, zachowując historyczne elementy

Stabilne elementy i widoki współdzielone

Istniejące elementy współdzielone zachowują swoje indeksy i tożsamości obiektów, a nowe typowane wartości są dołączane do dziedziny; zmiana kolejności, usunięcie i późniejsze ponowne wprowadzenie elementów źródłowych zachowuje ukryte elementy, wybory stron, odwołania do elementów bazowych i jawne mapowania grup, które już wskazują te elementy

Wszystkie widoki dzielące jedną pamięć podręczną widzą odświeżone rekordy; nieobecne elementy historyczne pozostają w dziedzinie pamięci podręcznej, ale same nie tworzą wierszy agregacji, ponieważ TXLSPivotTable.Make buduje wyniki z bieżących rekordów

Elementy historyczne są zachowywane niezależnie od MissingItemsLimit; ta ścieżka odświeżania nie czysci brakujących elementów, nie egzekwuje limitu zachowanych elementów ani nie przemumerowuje indeksów wyboru

Wartości liczbowe, datowe, Boolean, tekstowe, puste i reprezentowalne błędy zachowują swoje typy przez odświeżenie i zapis XLSX; flagi treści elementów współdzielonych i reprezentowalne granice są przeliczane z zachowanej i nowo dołączonej dziedziny

Zapis uzupełnia odświeżone listy elementów widoku przed końcowymi elementami sum częściowych, zachowując istniejącą kolejność, flagi ukrycia i zaimportowane rozszerzenia układu; wybory stron mapują się między logicznymi elementami pamięci podręcznej a pozycjami zapisanymi w każdym widoku, więc zmieniona kolejność list elementów nadal wybiera ten sam element po ponownym otwarciu

Pola i grupy obliczeniowe

Pola obliczeniowe nie konsumują kolumn źródłowych; ich nazwy, formuły i dziedziny elementów współdzielonych pozostają dostępne, a każdy odświeżony rekord startuje z pustym placeholderem dla tych pól; Make ewaluuje obsługiwane formuły obliczeniowe z bieżących wartości źródłowych

Rekordy pamięci podręcznej XLSX przechowują wyłącznie pola bazodanowe; zapis i ponowne otwarcie zachowują wyrównanie kolumn źródłowych nawet wtedy, gdy pola obliczeniowe występują między polami bazodanowymi

Grupowanie liczbowe i datowe pola źródłowego może akceptować nowe elementy; jawne grupowanie dyskretne akceptuje przemianowaną kolejność istniejących elementów, ale odrzuca nowy element bez jawnego mapowania, zachowując całą poprzednią pamięć podręczną

Wersja 2.384.94 odtwarza obsługiwane stałe pochodne pola pogrupowane ze zwalidowanych powiązań bazowe/nadrzędne; automatyczne rozszerzanie dziedziny, niezmapowane elementy dyskretne i pola właściwości elementów są odrzucane transakcyjnie, a źródła zewnętrzne i OLAP pozostają poza kontraktem źródeł lokalnych; zobacz granice pamięci podręcznej pogrupowanej

Aktualizacje atomowe i odświeżanie przez callbacki

Walidacja źródła, odczyt, konwersja typów, alokacja rekordów i wyszukiwanie elementów kończą się w odłączonych danych etapowania; błąd pozostawia żywe uchwyty pól i elementów, rekordy, metadane, surowy stan odtwarzania oraz wszystkie widoki współdzielone nienaruszone

Sukces zastępuje bufory rekordów i wyszukiwania, wyłącza surowe odtwarzanie pamięci podręcznej, aktualizuje RefreshedDate i ustawia RefreshOnLoad=False; zapis korzysta z odświeżonej typowanej pamięci podręcznej zamiast odtwarzać jej poprzednią surową reprezentację

Kod samodzielny albo wsparty Classic może użyć tej samej implementacji etapowania przez TXLSPivotCache.RefreshFromSource; jego czytnik otrzymuje współrzędne źródła numerowane od 1 i zwraca Variant, a błędy walidacji albo czytnika kończą się wyjątkiem

TlxPivotSourceCellValue = function(ARow, ACol: Integer): Variant of object;
procedure TXLSPivotCache.RefreshFromSource(AValueReader: TlxPivotSourceCellValue);
procedure TXLSPivotCache.RefreshFromSource(AValueReader: TlxPivotSourceCellValue;
  AFirstRow, AFirstCol, ALastRow, ALastCol: Integer);

Przeciążenie jednoargumentowe wymaga konkretnego lokalnego prostokąta w pamięci podręcznej; przeciążenie z jawnymi granicami czyta rozwiązany przez wywołującego lokalny prostokąt bez zmiany tożsamości źródła nazwanego albo tabeli w pamięci podręcznej, a wywołujący pozostaje odpowiedzialny za poprawne rozwiązanie tej tożsamości

Odświeżenie pamięci podręcznej aktualizuje jej dane; aplikacje mogą wywołać Make z własnym pisarzem wyników albo MaterializePivotTable dla chronionego wyjścia arkuszowego; typowany wybór Slicerów tabel przestawnych non-OLAP jest dostępny dla obsługiwanych zaimportowanych powiązań, podczas gdy kompletny natywny układ pozostaje osobną pracą