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ą