HotXLS-Dokumentation

Native berechnete Pivot-Felder und cache-eigene Elemente

Aus Kontextsummen berechnen

Für ein lokales berechnetes Cache-Feld summiert die native Vorschau zuerst jedes referenzierte Datenbankfeld im angeforderten Leaf-, Teilsummen- oder Gesamtergebnis-Kontext und wertet dann die Formel aus; Abhängigkeiten können in den angezeigten Datenfeldern fehlen

Beispielsweise erzeugen zwei Records mit Amount/Units-Werten von 10/1 und 30/9 ein natives berechnetes Feldergebnis von 40/10 = 4, und ein Gesamtergebnis wertet seine eigenen Abhängigkeitssummen aus, statt angezeigte Quotienten zu addieren

Berechnete Elemente werten Member-Referenzen in jedem vollständigen Leaf-Kontext aus, einschließlich der anderen Zeilen- und Spaltenachsen; Teilsummen und Gesamtergebnisse schließen die daraus entstehenden Member-Beiträge ein, sodass ein Quotientenelement eine Summe seiner Leaf-Quotienten beitragen kann

Ein manuell verstecktes Member bleibt verfügbar, wenn ein anderes berechnetes Element darauf verweist, während sein eigener Beitrag außerhalb der angezeigten Gesamtergebnisse bleibt; für A=40 und B=60 liefert das Verstecken von A weiterhin Combined=A+B den Wert 100 und schließt Combined in das sichtbare Gesamtergebnis ein

Wenn berechnete Felder und Elemente koexistieren, aktualisieren die Elementbeiträge zuerst die Summen ihrer referenzierten Datenbankfelder, dann wertet das berechnete Feld diese aktualisierten Kontextsummen aus

Berechnete Elemente können zu mehreren ungruppierten Feldern gehören; die behaltene Cache-Definitionsreihenfolge bestimmt, welche Feldformel zuletzt an eine Schnittmenge schreibt, sodass das Verschieben einer Definition sowohl diese Schnittmenge als auch die angezeigten Gesamtergebnisse ändern kann

Eine unaufgelöste Abhängigkeit eines berechneten Elements wird beim Referenzieren ausgewertet, einschließlich einer Abhängigkeit, die erst später in dieser Reihenfolge definiert wird; ein in einem früheren Schritt bereits berechnetes Member behält seinen aktuellen Schnittmengenwert, wenn eine andere Formel darauf verweist

Native Feldsummen ignorieren Boolean- und Textquellwerte, behalten numerische und Datumswerte und propagieren typisierte Quellfehler; lazy IF und IFERROR können einen Fehler behandeln, ohne einen ungenutzten Zweig auszuwerten

Cache-Besitz und Bindung

Öffentliche DeklarationKontrakt
TXLSPivotCacheCalculatedItemEine cache-eigene native Definition eines berechneten Members; erhalten Sie sie über den besitzenden Cache und halten Sie den Cache am Leben, solange Sie das geliehene Objekt nutzen
TXLSPivotCacheCalculatedItem.FieldIndex: IntegerNur lesende nullbasierte Cache-Feld-Identität
TXLSPivotCacheCalculatedItem.ItemIndex: IntegerNur lesende nullbasierte Shared-Member-Identität innerhalb von FieldIndex
TXLSPivotCacheCalculatedItem.Formula: WideStringLese-/schreibbare native Member-Formel; das Setzen ändert das Modell, während Vorschau oder explizite Bindung Syntax und Abhängigkeitszyklen vor der Berechnung validiert
TXLSPivotCacheCalculatedItem.Supported: BooleanNur lesende Verfügbarkeit der geparsten Bereichsidentität, keine Garantie, dass jede Formel- oder View-Kombination auswertbar ist
TXLSPivotCacheCalculatedItem.RawXml: WideStringNur lesendes erhaltenes XML für eine nicht unterstützte berechnete Elementdefinition; bekannte typisierte Definitionen nutzen einen leeren String
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItemErzeugt eine unterstützte typisierte Definition für ein vorhandenes Member und weist ungültige Identitäten, eine leere Formel oder doppelte Zielidentität zurück; das zurückgegebene Objekt gehört zum Cache
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItemLiefert die geliehene passende Definition oder nil
TXLSPivotCache.CalculatedItemCount: IntegerNur lesende Anzahl der behaltenen unterstützten oder nicht unterstützten Definitionen
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItemNur lesender nullbasierter geliehener Zugriff auf die Definitionsliste
TXLSPivotCache.ClearCalculatedItemsGibt die eigenen Definitionen frei und invalidiert geliehene Handles; es entfernt keine gemeinsamen Member und stellt keine Cache-Abfragevollständigkeit her
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer)Verschiebt eine vorhandene Definition zwischen nullbasierten Positionen in der nativen Solve-Order und behält dabei ihre geliehene Objektidentität; ungültige Positionen lösen EArgumentOutOfRangeException aus, ohne Definitionen zu verschieben
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString)Parser-orientierter Erhaltungshook, der unbekanntes XML behält und das Cache-Abfragemodell als unvollständig markiert
TXLSPivotCache.Assign(Source: TXLSPivotCache)Kopiert Definitionen, Felder, gemeinsame Member, Record-Indizes und Datumssystem-Kontext tief; Quellhandles bleiben unabhängig, und das Zuweisen desselben Caches an sich selbst ist sicher
TXLSPivotTable.BindCalculatedItemsToCacheValidiert und bindet von Views verfasste berechnete Elemente an einen abgekoppelten Cache und hängt dann die neuen gemeinsamen Member und Definitionen an den lebenden Cache an; Fehlschläge lassen Member-Identitäten und Definitionen unverändert, während bestehende Feld- und Member-Handles gültig bleiben

Ein mit TXLSPivotField.AddCalculatedItem erzeugtes, von einer View verfasstes Element braucht vor nativer Materialisierung oder typisierter nativer Rekonstruktion ein explizites BindCalculatedItemsToCache; das Importieren einer unterstützten nativen Cachedefinition liefert diesen Besitz bereits

Die Cache-Bindung betrifft jede View, die diesen Cache teilt; rufen Sie sie also als Autorenoperation auf und behalten Sie die geliehenen Handles nur, bis die entsprechende Liste geleert, zugewiesen oder zerstört wird

Member-Filter und Anzeigetransformationen

Beschriftungs- und Wertvergleiche auf einem berechneten Elementfeld wählen angezeigte Member aus, nachdem die Member-Formeln gelaufen sind; gefilterte Quellmember bleiben für referenzierte Formeln verfügbar, und sichtbare Teilsummen sowie Gesamtergebnisse schließen die direkten Beiträge dieser Member aus

Ein Wertvergleich kann ein berechnetes Measure wählen; jedes Kandidaten-Member wertet dieses Measure aus seinen Kontextabhängigkeitssummen aus, statt Quellrecord-Quotienten zu addieren oder die Formel als Cache-Record-Spalte zu behandeln

Berechnete Elementergebnisse unterstützen auch die modellierten ShowDataAs-Transformationen, einschließlich Prozentwerten, Index, Differenzen, laufenden Summen, Prozentwerten laufender Summen und Rängen; versteckte Member bleiben außerhalb sichtbarer Laufsummen- und Rangfolgen, während Formelreferenzen ihre ursprünglichen Werte behalten

Öffentliche DeklarationKontrakt
TXLSPivotFilter.DataFieldIsMeasureIndex: BooleanWählt die Identitätsdomäne von DataField; False behält die bestehende nullbasierte Cache-Feld-Identität, während True eine nullbasierte Position eines angezeigten Data-Measure identifiziert und beim Import von nativem iMeasureFld gesetzt wird
TXLSPivotFilter.SourceOrder: IntegerLese-/schreibbare nullbasierte globale Reihenfolge, aus dem nativen filters-Element beibehalten, standardmäßig -1 wenn abwesend; lokale Berechnung und typisiertes Schreiben nutzen zuerst nichtnegatives EvalOrder, dann SourceOrder, dann stabile Feld-/Listenreihenfolge

Typisiertes natives Schreiben konvertiert eine Cache-Feld-Identität in ihre angezeigte Measure-Position; ein Cache-Feld, das von mehreren Data Measures genutzt wird, braucht eine explizite Measure-Position, weil seine Aggregations- und Anzeigeidentität sonst mehrdeutig wäre

Excel kann aktive Filter mit evalOrder=-1 speichern, während es ihre Auswertungsreihenfolge über die filters-Elementfolge erhält; Import, Klonen und typisierte Rekonstruktion behalten diese Folge, statt diese Filter als inaktiv zu behandeln

Das Ändern einer Filterdefinition oder ihrer beibehaltenen Quellposition auf einer importierten, erhaltenen nativen View erfordert typisierte Rekonstruktion; gewöhnliche native Adoption validiert die erhaltene Filteridentität und weist nicht unterstützte Bearbeitungen zurück, bevor Berichtzellen geschrieben werden

Vorschau, Abfragen und Datumssysteme

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 mit AUseNativeGrandTotals=True nutzt eine abgekoppelte Tabelle und einen abgekoppelten Cache, einschließlich exakter nativer Summen und berechneter Elementidentitäten; gewöhnliches Make und Standard-MakePreview behalten ihr bestehendes Record-basiertes Berechnungsverhalten

GetDataValue nutzt native Kontextsummen, wenn der Cache berechnete Felder oder Elemente hat, und GETPIVOTDATA teilt diesen Abfragepfad; keine der beiden Operationen aktualisiert Quelldaten, berechnet inspizierte Arbeitsblattformeln neu oder schreibt Berichtzellen

Öffentliche DeklarationKontrakt
TXLSPivotCache.Date1904: BooleanLese-/schreibbarer Quelldatumssystem-Kontext für eigenständige native Berechnungen; er steht standardmäßig auf False und wird beim Classic- und XLSX-Import, bei der Arbeitsblatt-Cache-Erzeugung und beim XLSX-Cache-Kopieren gebunden
TXLSPivotDateSystemTypisierte Datumssystemauswahl für abgekoppelte native Vorschauen und Abfragen
xlpdsCacheNutzt den beibehaltenen Date1904-Kontext des Caches, ohne ihn zu ändern
xlpds1900Projiziert das 1900-Datumssystem in die abgekoppelte Berechnung
xlpds1904Projiziert das 1904-Datumssystem in die abgekoppelte Berechnung
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): BooleanDer niedrigere native Layout-Helper akzeptiert dieselbe abgekoppelte Datumssystemauswahl nach seinen ResultXml- und Reason-Ausgabeparametern
TXLSGetDate1904 = function: Boolean of objectCalculator-Metadaten-Callback, der das aktuelle Datumssystem der besitzenden Arbeitsmappe liest
TXLSCalculator.OnGetDate1904: TXLSGetDate1904Optionaler geliehener Callback, den GETPIVOTDATA nutzt; nil nutzt den Cache-Kontext, während Arbeitsmappenauswerter und ihre Nur-Lese-Views die aktuelle Arbeitsmappeneinstellung liefern

Eigenständige Aufrufer müssen den korrekten Date1904-Kontext des Caches oder eine explizite Datumssystemauswahl liefern; arbeitsmappeneigene native Materialisierung und Formelabfragen projizieren die aktuelle Arbeitsmappeneinstellung, ohne den lebenden Cache zu ändern

Datumquellwerte bleiben absolute TDateTime-Werte im Cache, während native numerische Formeln Excel-Datumsserienwerte nutzen; das 1904-System subtrahiert 1462 Tage pro Datumswert, und die 1900-Konvertierung behandelt die darstellbaren Daten vor März 1900

Der Besitz gespeicherter nativer Ausgabe zeichnet seinen Datumssystem-Kontext auf und vergleicht stilisierte Datumswerte gegen ihre serialisierte numerische Payload; Speichern, Neuöffnen oder Ändern der Arbeitsmappen-Datumsbasis erhält legitimen Besitz, während geänderte Datum-, Boolean-, Fehler- und Textpayloads weiterhin eine Überschreibung zurückweisen

Budgets und nicht unterstützte Eingaben

Der optionale TlxPivotQueryBudget-Callback erhält Arbeitsinkremente und eine aktuelle Speicherschätzung, einschließlich des vorgeschlagenen abgekoppelten Snapshots und der Formelspeicherung; False bricht mit EXLSPivotQueryBudget ab, und Callback-Exceptions propagieren

Record-Breiten und Datenbankmember-Identitäten werden vor dem Klonen geprüft; Formelkompilierung und -auswertung belasten das Arbeitsbudget, und die Berechnung behält begrenzte Syntaxtiefe, Formeltext, berechnete Member-Domänen und Akkumulator-Speicherung

Die Planung berechneter Elemente begrenzt die kombinierten Member-Domänen, Beschriftungsspeicher und Feldpläne vor der Allokation; native Member-Auswertung und späte Aggregatfilter-Scans weisen ebenfalls vorgeschlagene Arbeit über ihre festen Limits hinaus zurück, bevor sie in diese Scans eintreten, und eine Budget-Abbruch lässt lebende Member-Masken unverändert

Der Formelparser unterstützt numerische Konstanten, Feldnamen, gequotete Namen, feldqualifizierte Member-Namen, Arithmetik und Vergleiche, Prozent sowie ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR und PI; unbekannte Funktionen, Zellreferenzen, Arrays und ungebundene Namen weisen zurück, statt geratene Werte zu liefern

Native berechnete Felder erfordern SUM-Data-Measures und können keine Zeilen-, Spalten- oder Seitenachsen sein; berechnete Elemente erfordern behaltene String-Beschriftungen in ungruppierten Cache-Feldern, automatische oder SUM-Teilsummen, SUM-Measures und die unterstützte Single-Member-Bereichsidentität

Unbekannte Formelfunktionen, nonzero area fieldPosition, unbekannte oder missgebildete Bereichsmetadaten, mehrdeutige Filter-Measure-Identitäten und gleichzeitig aktive basische und erweiterte Anzeigetransformationen weisen explizit zurück; diese Beschränkungen machen aus einer nicht unterstützten Definition kein gewöhnliches Element

Späte Aggregatfilterung berechneter Member unterstützt modellierte Wertvergleiche; Legacy-Varianten für count-, percentage- und sum-Filter sowie nicht modellierte Top-n-Metadaten erfordern ein unterstütztes natives Auswahlmodell und weisen zurück, statt Quellrecord-Vergleiche zu substituieren

Importierte Roh-Teile behalten nicht unterstützte Future-Metadaten für gewöhnliche Roundtrip-Erhaltung; lokale Berechnung, typisierte Rekonstruktion und semantische Feature-Extraktion erfordern ein verfügbares Modell und aktualisieren keine Quelldaten, um fehlende Cache-Records zu fabrizieren

Semantische Pivot-Cachedefinitionen umfassen berechnete Elementidentität und Formel, Datumssystem-Kontext und abgekoppelte begrenzte Payloads; nicht verfügbare native Erweiterungen bleiben ein expliziter semantischer Fehler