Docs HotXLS

Champs Pivot calculés natifs et éléments détenus par le cache

Calculer à partir des sommes de contexte

Pour un champ de cache calculé local, la prévisualisation native somme d'abord chaque champ de base de données référencé dans le contexte demandé — feuille terminale, sous-total ou total général — puis évalue la formule ; les dépendances peuvent rester absentes des champs de données affichés

Par exemple, deux enregistrements avec des valeurs Amount/Units de 10/1 et 30/9 produisent un résultat de champ calculé natif de 40/10 = 4, et un total général évalue ses propres sommes de dépendances au lieu d'additionner les ratios affichés

Les éléments calculés évaluent les références de membres dans chaque contexte de feuille terminale complet, y compris les autres axes de lignes et de colonnes ; les sous-totaux et totaux généraux intègrent les contributions résultantes des membres, si bien qu'un élément de ratio peut contribuer à une somme de ses ratios terminaux

Un membre masqué manuellement reste disponible quand un autre élément calculé le référence, tandis que sa propre contribution reste hors des totaux affichés ; pour A=40 et B=60, masquer A laisse Combined=A+B à la valeur 100 et inclut Combined dans le total général visible

Quand champs et éléments calculés coexistent, les contributions des éléments mettent d'abord à jour les sommes des champs de base de données référencés, puis le champ calculé évalue ces sommes de contexte mises à jour

Les éléments calculés peuvent appartenir à plusieurs champs non groupés ; l'ordre des définitions conservé par le cache détermine quelle formule de champ écrit en dernier une intersection donnée, donc déplacer une définition peut changer à la fois cette intersection et les totaux affichés

Une dépendance de membre calculé non résolue s'évalue au moment où elle est référencée, y compris une dépendance définie plus tard dans cet ordre ; un membre déjà calculé à une étape antérieure conserve sa valeur d'intersection courante quand une autre formule le référence

Les sommes de champs natives ignorent les valeurs sources Boolean et texte, conservent les valeurs numériques et de dates et propagent les erreurs sources typées ; les IF et IFERROR paresseux peuvent traiter une erreur sans évaluer une branche inutilisée

Possession par le cache et liaison

Déclaration publiqueContrat
TXLSPivotCacheCalculatedItemDéfinition native de membre calculé détenue par le cache ; obtenez-la via le cache propriétaire et gardez le cache en vie tant que vous utilisez l'objet emprunté
TXLSPivotCacheCalculatedItem.FieldIndex: IntegerIdentité de champ de cache en lecture seule, en base zéro
TXLSPivotCacheCalculatedItem.ItemIndex: IntegerIdentité de membre partagé en lecture seule, en base zéro, au sein de FieldIndex
TXLSPivotCacheCalculatedItem.Formula: WideStringFormule de membre native en lecture/écriture ; la régler change le modèle, tandis que la prévisualisation ou la liaison explicite valide syntaxe et cycles de dépendances avant le calcul
TXLSPivotCacheCalculatedItem.Supported: BooleanDisponibilité en lecture seule de l'identité de zone analysée, et non une garantie que chaque combinaison formule/vue puisse être évaluée
TXLSPivotCacheCalculatedItem.RawXml: WideStringXML préservé en lecture seule pour une définition d'élément calculé non prise en charge ; les définitions typées connues utilisent une chaîne vide
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItemCrée une définition typée prise en charge pour un membre existant, en rejetant les identités invalides, une formule vide ou une identité cible dupliquée ; l'objet renvoyé appartient au cache
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItemRenvoie la définition correspondante empruntée ou nil
TXLSPivotCache.CalculatedItemCount: IntegerNombre en lecture seule des définitions conservées, prises en charge ou non
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItemAccès emprunté en lecture seule, en base zéro, à la liste des définitions
TXLSPivotCache.ClearCalculatedItemsLibère les définitions détenues et invalide les handles empruntés ; cela ne supprime pas les membres partagés ni n'établit la complétude de requête du cache
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer)Déplace une définition existante entre positions en base zéro de l'ordre de résolution natif, en préservant l'identité de son objet emprunté ; des positions invalides lèvent EArgumentOutOfRangeException sans déplacer les définitions
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString)Hook de préservation orienté parseur qui conserve un XML inconnu et marque le modèle de requête du cache comme incomplet
TXLSPivotCache.Assign(Source: TXLSPivotCache)Copie en profondeur définitions, champs, membres partagés, index d'enregistrements et contexte de système de date ; les handles sources restent indépendants, et l'affectation d'un cache à lui-même est sûre
TXLSPivotTable.BindCalculatedItemsToCacheValide et lie à un cache détaché les éléments calculés créés au niveau de la vue, puis ajoute les nouveaux membres partagés et définitions au cache actif ; les échecs laissent identités de membres et définitions inchangées, et les handles existants de champs et de membres restent valides

Un élément créé au niveau de la vue avec TXLSPivotField.AddCalculatedItem exige un BindCalculatedItemsToCache explicite avant toute matérialisation native ou reconstruction native typée ; l'import d'une définition de cache native prise en charge fournit déjà cette possession

La liaison au cache affecte chaque vue partageant ce cache, donc appelez-la comme une opération de création et ne conservez les handles empruntés que jusqu'à ce que la liste correspondante soit vidée, réaffectée ou détruite

Filtres de membres et transformations d'affichage

Les comparaisons de légende et de valeurs sur un champ d'éléments calculés sélectionnent les membres affichés après exécution des formules de membres ; les membres sources filtrés restent disponibles pour les formules qui les référencent, et les sous-totaux et totaux généraux visibles excluent les contributions directes de ces membres

Une comparaison de valeurs peut sélectionner une mesure calculée ; chaque membre candidat évalue cette mesure à partir de ses sommes de dépendances de contexte, plutôt que d'additionner des ratios d'enregistrements sources ou de traiter la formule comme une colonne d'enregistrements du cache

Les résultats d'éléments calculés prennent aussi en charge les transformations ShowDataAs modélisées, dont pourcentages, index, différences, totaux cumulés, pourcentages des totaux cumulés et rangs ; les membres masqués restent hors des séquences visibles de cumul et de rang, tandis que les références de formules gardent leurs valeurs d'origine

Déclaration publiqueContrat
TXLSPivotFilter.DataFieldIsMeasureIndex: BooleanSélectionne le domaine d'identité de DataField ; False conserve l'identité existante de champ de cache en base zéro, tandis que True identifie une position de mesure de données affichée en base zéro et est activé quand un iMeasureFld natif est importé
TXLSPivotFilter.SourceOrder: IntegerOrdre global en lecture/écriture, en base zéro, conservé depuis l'élément filters natif, valant -1 par défaut en cas d'absence ; le calcul local et l'écriture typée utilisent d'abord un EvalOrder non négatif, puis SourceOrder, puis l'ordre stable des champs/listes

L'écriture native typée convertit une identité de champ de cache en sa position de mesure affichée ; un champ de cache utilisé par plusieurs mesures de données exige une position de mesure explicite, faute de quoi son identité d'agrégation et d'affichage serait ambiguë

Excel peut enregistrer des filtres actifs avec evalOrder=-1 tout en préservant leur ordre d'évaluation via la séquence de l'élément filters ; l'import, le clonage et la reconstruction typée conservent cette séquence au lieu de traiter ces filtres comme inactifs

Modifier une définition de filtre ou sa position source conservée sur une vue native importée et préservée exige une reconstruction typée ; l'adoption native ordinaire valide l'identité conservée du filtre et refuse les éditions non prises en charge avant d'écrire les cellules du rapport

Prévisualisation, requêtes et systèmes de date

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 avec AUseNativeGrandTotals=True utilise une table et un cache détachés, sommes natives exactes et identités d'éléments calculés comprises ; Make ordinaire et MakePreview par défaut conservent leur comportement de calcul existant basé sur les enregistrements

GetDataValue utilise les sommes de contexte natives quand le cache contient des champs ou éléments calculés, et GETPIVOTDATA partage ce chemin de requête ; aucune des deux opérations n'actualise les données sources, ne recalcule les formules de feuilles inspectées ni n'écrit de cellules de rapport

Déclaration publiqueContrat
TXLSPivotCache.Date1904: BooleanContexte de système de date source en lecture/écriture pour les calculs natifs autonomes ; il vaut False par défaut et est lié lors des imports Classic et XLSX, de la création de caches de feuilles et de la copie de caches XLSX
TXLSPivotDateSystemSélection typée du système de date pour les prévisualisations et requêtes natives détachées
xlpdsCacheUtilise le contexte Date1904 conservé du cache sans le modifier
xlpds1900Projette le système de date 1900 dans le calcul détaché
xlpds1904Projette le système de date 1904 dans le calcul détaché
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): BooleanLe helper de disposition native de plus bas niveau accepte la même sélection détachée de système de date après ses paramètres de sortie ResultXml et Reason
TXLSGetDate1904 = function: Boolean of objectCallback de métadonnées du calculator qui lit le système de date courant du classeur propriétaire
TXLSCalculator.OnGetDate1904: TXLSGetDate1904Callback emprunté facultatif utilisé par GETPIVOTDATA ; nil utilise le contexte du cache, tandis que les évaluateurs de classeur et leurs vues en lecture seule fournissent le réglage courant du classeur

Les appelants autonomes doivent fournir le bon contexte Date1904 du cache ou une sélection explicite de système de date ; la matérialisation native détenue par le classeur et les requêtes de formules projettent le réglage courant du classeur sans modifier le cache actif

Les valeurs de dates sources restent des valeurs TDateTime absolues dans le cache, tandis que les formules numériques natives emploient des numéros de série Excel ; le système 1904 retranche 1462 jours par valeur de date, et la conversion 1900 gère les dates représentables avant mars 1900

La possession de la sortie native enregistrée mémorise son contexte de système de date et compare les valeurs de dates stylées à leur payload numérique sérialisé ; enregistrer, rouvrir ou changer la base de date du classeur préserve la possession légitime, tandis que des payloads date, Boolean, erreur et texte modifiés continuent de refuser l'écrasement

Budgets et entrées non prises en charge

Le callback facultatif TlxPivotQueryBudget reçoit des incréments de travail et une estimation mémoire courante, instantané détaché proposé et stockage de formules compris ; False interrompt avec EXLSPivotQueryBudget et les exceptions de callback se propagent

Les largeurs d'enregistrements et les identités de membres de base de données sont vérifiées avant clonage ; la compilation et l'évaluation de formules consomment du travail, et le calcul conserve une profondeur de syntaxe, un texte de formule, des domaines de membres calculés et un stockage d'accumulateurs bornés

La planification des éléments calculés limite les domaines de membres combinés, le stockage des légendes et les plans de champs avant allocation ; l'évaluation native des membres et les scans tardifs de filtres d'agrégats refusent aussi tout travail proposé au-delà de leurs limites fixes avant d'entrer dans ces scans, et l'annulation par budget laisse les masques de membres actifs inchangés

Le parseur de formules accepte les constantes numériques, les noms de champs, les noms entre guillemets, les noms de membres qualifiés par champ, l'arithmétique et les comparaisons, le pourcentage, ainsi que ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR et PI ; fonctions inconnues, références de cellules, tableaux et noms non liés sont rejetés au lieu de fournir des valeurs devinées

Les champs calculés natifs exigent des mesures de données SUM et ne peuvent pas occuper un axe de lignes, de colonnes ou de pages ; les éléments calculés exigent des légendes de chaînes conservées dans des champs de cache non groupés, des sous-totaux automatiques ou SUM, des mesures SUM et l'identité de zone à membre unique prise en charge

Les fonctions de formules inconnues, un fieldPosition de zone non nul, des métadonnées de zone inconnues ou mal formées, des identités de mesure de filtres ambiguës et des transformations d'affichage basiques et étendues mutuellement actives sont rejetés explicitement ; ces restrictions ne transforment pas une définition non prise en charge en élément ordinaire

Le filtrage tardif d'agrégats des membres calculés accepte les comparaisons de valeurs modélisées ; les variantes legacy de filtres count, pourcentage et somme ainsi que les métadonnées Top n non modélisées exigent un modèle de sélection native pris en charge et sont rejetées au lieu de subir des comparaisons d'enregistrements sources

Les parties brutes importées conservent les métadonnées futures non prises en charge pour la préservation roundtrip ordinaire ; le calcul local, la reconstruction typée et l'extraction de fonctionnalités sémantiques exigent un modèle disponible et n'actualisent pas les données sources pour fabriquer des enregistrements de cache manquants

Les définitions sémantiques de cache Pivot incluent l'identité et la formule des éléments calculés, le contexte de système de date et des payloads détachés bornés ; les extensions natives indisponibles restent une erreur sémantique explicite