HotXLS-documentatie

Native berekende Pivot-velden en cache-eigen items

Berekenen vanuit contexttotalen

Voor een lokaal berekend cacheveld sommeert de native preview eerst elk gerefereerd databaseveld in de opgevraagde leaf-, subtotaal- of eindtotaalcontext en evalueert daarna de formule; afhankelijkheden kunnen ontbreken in de weergegeven datavelden

Zo leveren bijvoorbeeld twee records met Amount/Units-waarden van 10/1 en 30/9 een resultaat van 40/10 = 4 voor een berekend veld, en evalueert een eindtotaal zijn eigen afhankelijkheidstotalen in plaats van weergegeven verhoudingen op te tellen

Berekende items evalueren ledenverwijzingen in elke volledige leaf-context, inclusief de andere rij- en kolomassen; subtotalen en eindtotalen omvatten de bijbehorende ledenbijdragen, dus een verhoudingsitem kan een som van zijn leaf-verhoudingen bijdragen

Een handmatig verborgen lid blijft beschikbaar wanneer een ander berekend ernaar verwijst, terwijl zijn eigen bijdrage buiten de weergegeven totalen blijft; bij A=40 en B=60 levert het verbergen van A nog steeds Combined=A+B met waarde 100 op, en wordt Combined in het zichtbare eindtotaal meegenomen

Wanneer berekende velden en items naast elkaar bestaan, werken itembijdragen eerst de totalen van hun gerefereerde databasevelden bij, en evalueert het berekende veld daarna die bijgewerkte contexttotalen

Berekende items kunnen tot meerdere niet-gegroepeerde velden behoren; de behouden volgorde van cachedefinities bepaalt welk veldformule als laatste een intersectie wegschrijft, dus een definitie verplaatsen kan zowel die intersectie als de weergegeven totalen veranderen

Een onopgeloste berekende-lid-afhankelijkheid evalueert op het moment dat ernaar wordt verwezen, inclusief een afhankelijkheid die later in die volgorde is gedefinieerd; een lid dat in een eerdere stap al is berekend, behoudt zijn actuele intersectiewaarde wanneer een andere formule ernaar verwijst

Native veldtotalen negeren Boolean- en tekstbronwaarden, behouden numerieke en datumwaarden en propageren getypeerde bronfouten; luie IF en IFERROR kunnen een fout afhandelen zonder een ongebruikte tak te evalueren

Cache-eigendom en binding

Openbare declaratieContract
TXLSPivotCacheCalculatedItemEen cache-eigen definitie van een native berekend lid; verkrijg het via de beherende cache en houd de cache in leven zolang je het geleende object gebruikt
TXLSPivotCacheCalculatedItem.FieldIndex: IntegerAlleen-lezen zero-based cacheveldidentiteit
TXLSPivotCacheCalculatedItem.ItemIndex: IntegerAlleen-lezen zero-based gedeeld-lid-identiteit binnen FieldIndex
TXLSPivotCacheCalculatedItem.Formula: WideStringLees/schrijfbare native ledenformule; het zetten ervan wijzigt het model, terwijl preview of expliciete binding syntaxis en afhankelijkheidscycli valideert vóór berekening
TXLSPivotCacheCalculatedItem.Supported: BooleanAlleen-lezen beschikbaarheid van de geparseerde gebiedsidentiteit, geen garantie dat elke formule- of weergavecombinatie evalueerbaar is
TXLSPivotCacheCalculatedItem.RawXml: WideStringAlleen-lezen bewaarde XML voor een niet-ondersteunde berekende-item-definitie; bekende getypeerde definities gebruiken een lege string
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItemMaakt een ondersteunde getypeerde definitie voor een bestaand lid en weigert ongeldige identiteiten, een lege formule of een dubbele doelidentiteit; het teruggegeven object behoort tot de cache
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItemGeeft de geleende matchende definitie of nil terug
TXLSPivotCache.CalculatedItemCount: IntegerAlleen-lezen aantal behouden ondersteunde of niet-ondersteunde definities
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItemAlleen-lezen zero-based geleende toegang tot de definitielijst
TXLSPivotCache.ClearCalculatedItemsGeeft de beheerde definities vrij en maakt geleende handles ongeldig; het verwijdert geen gedeelde leden en maakt de cachequery niet volledig
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer)Verplaatst een bestaande definitie tussen zero-based posities in de native solve-volgorde en behoudt daarbij zijn geleende objectidentiteit; ongeldige posities geven EArgumentOutOfRangeException zonder definities te verplaatsen
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString)Op de parser gerichte bewaarhaak die onbekende XML vasthoudt en het cachequerymodel als onvolledig markeert
TXLSPivotCache.Assign(Source: TXLSPivotCache)Maakt een diepe kopie van definities, velden, gedeelde leden, recordindices en datasysteemcontext; bronhandles blijven onafhankelijk, en het toewijzen van dezelfde cache aan zichzelf is veilig
TXLSPivotTable.BindCalculatedItemsToCacheValideert en bindt door weergaven geschreven berekende items aan een losgemaakte cache en voegt daarna de nieuwe gedeelde leden en definities toe aan de live cache; bij fouten blijven ledenidentiteiten en definities onveranderd, terwijl bestaande veld- en ledenhandles geldig blijven

Een door een weergave geschreven item dat met TXLSPivotField.AddCalculatedItem is aangemaakt, heeft expliciete BindCalculatedItemsToCache nodig vóór native materialisatie of getypeerde native reconstructie; het importeren van een ondersteunde native cachedefinitie levert dat eigendom al mee

Cachebinding raakt elke weergave die die cache deelt, dus roep het aan als auteursbewerking en houd de geleende handles alleen vast tot de bijbehorende lijst wordt gewist, toegewezen of vernietigd

Ledenfilters en weergavetransformaties

Bijschrift- en waardevergelijkingen op een berekend-item-veld kiezen weergegeven leden nadat de ledenformules zijn gedraaid; gefilterde bronleden blijven beschikbaar voor gerefereerde formules, en zichtbare subtotalen en eindtotalen laten de directe bijdragen van die leden buiten

Een waardevergelijking kan een berekende measure selecteren; elk kandidaat-lid evalueert die measure vanuit zijn contextafhankelijkheidstotalen, in plaats van bronrecordverhoudingen op te tellen of de formule als cache-recordkolom te behandelen

Ook berekende-item-resultaten ondersteunen de gemodelleerde ShowDataAs-transformaties, waaronder percentages, index, verschillen, lopende totalen, percentages van lopende totalen en rangschikkingen; verborgen leden blijven buiten zichtbare lopende en rangreeksen, terwijl formuleverwijzingen hun oorspronkelijke waarden behouden

Openbare declaratieContract
TXLSPivotFilter.DataFieldIsMeasureIndex: BooleanKiest het identiteitsdomein van DataField; False behoudt de bestaande zero-based cacheveldidentiteit, terwijl True een zero-based weergegeven data-measure-positie identificeert en wordt gezet wanneer native iMeasureFld wordt geïmporteerd
TXLSPivotFilter.SourceOrder: IntegerLees/schrijfbare zero-based globale volgorde, overgenomen uit het native filters-element en standaard -1 wanneer afwezig; lokale berekening en getypeerd wegschrijven gebruiken eerst niet-negatieve EvalOrder, daarna SourceOrder en daarna de stabiele veld-/lijstvolgorde

Getypeerd native wegschrijven converteert een cacheveldidentiteit naar zijn weergegeven measure-positie; een cacheveld dat door meerdere data-measures wordt gebruikt heeft een expliciete measure-positie nodig, omdat zijn aggregatie- en weergaveidentiteit anders dubbelzinnig zou zijn

Excel kan actieve filters opslaan met evalOrder=-1 terwijl hun evaluatievolgorde behouden blijft via de volgorde van het filters-element; importeren, klonen en getypeerde reconstructie behouden die volgorde in plaats van die filters als inactief te behandelen

Het wijzigen van een filterdefinitie of zijn bewaarde bronpositie op een geïmporteerde bewaarde native weergave vereist getypeerde reconstructie; gewone native adoptie valideert bewaarde filteridentiteit en weigert niet-ondersteunde bewerkingen vóór het wegschrijven van rapportcellen

Preview, query's en datasystemen

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 met AUseNativeGrandTotals=True gebruikt een losgemaakte tabel en cache, inclusief exacte native totalen en berekende-item-identiteiten; gewone Make en standaard MakePreview houden hun bestaande recordgebaseerde berekening aan

GetDataValue gebruikt native contexttotalen wanneer de cache berekende velden of items heeft, en GETPIVOTDATA deelt dat querypad; geen van beide bewerkingen vernieuwt brondata, herberekent geïnspecteerde werkbladformules of schrijft rapportcellen

Openbare declaratieContract
TXLSPivotCache.Date1904: BooleanLees/schrijfbare context van het bron-datasysteem voor zelfstandige native berekeningen; staat standaard op False en wordt gebonden tijdens Classic- en XLSX-import, bij het aanmaken van werkbladcaches en bij het kopiëren van XLSX-caches
TXLSPivotDateSystemGetypeerde keuze van datasysteem voor losgemaakte native previews en query's
xlpdsCacheGebruik de bewaarde Date1904-context van de cache zonder die te wijzigen
xlpds1900Projecteer het 1900-datasysteem in de losgemaakte berekening
xlpds1904Projecteer het 1904-datasysteem in de losgemaakte berekening
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): BooleanDe native layout-helper op lager niveau accepteert dezelfde losgemaakte datasysteemkeuze na zijn ResultXml- en Reason-uitvoerparameters
TXLSGetDate1904 = function: Boolean of objectMetadata-callback van de calculator die het actuele datasysteem van de beherende werkmap leest
TXLSCalculator.OnGetDate1904: TXLSGetDate1904Optionele geleende callback die door GETPIVOTDATA wordt gebruikt; nil gebruikt de cachecontext, terwijl werkmapevaluators en hun alleen-lezen weergaven de actuele werkmapinstelling leveren

Zelfstandige aanroepers moeten de juiste cache-Date1904-context of een expliciete datasysteemkeuze leveren; werkmap-eigen native materialisatie en formulequery's projecteren de actuele werkmapinstelling zonder de live cache te wijzigen

Datumbronwaarden blijven absolute TDateTime-waarden in de cache, terwijl native numerieke formules Excel-datumserienummers gebruiken; het 1904-systeem trekt 1462 dagen af per datumwaarde, en de 1900-conversie behandelt de representeerbare datums vóór maart 1900

Het eigendom van opgeslagen native uitvoer registreert zijn datasysteemcontext en vergelijkt gestileerde datumwaarden met hun geserialiseerde numerieke payload; opslaan, heropenen of het wijzigen van de datumbasis van de werkmap behoudt legitiem eigendom, terwijl gewijzigde datum-, Boolean-, fout- en tekstpayloads overschrijven alsnog weigeren

Budgetten en niet-ondersteunde invoer

De optionele TlxPivotQueryBudget-callback ontvangt werktoenames en een actuele geheugenschatting, inclusief de voorgestelde losgemaakte snapshot en formuleopslag; False breekt af met EXLSPivotQueryBudget en callback-exceptions propageren

Recordbreedtes en databaseledenidentiteiten worden gecontroleerd vóór het klonen; formulecompilatie en -evaluatie belasten de werkregistratie, en de berekening houdt begrensde syntaxisdiepte, formuletekst, berekende-leden-domeinen en accumulatoreopslag aan

Het plannen van berekende items begrenst de gecombineerde leden-domeinen, bijschriftopslag en veldplannen vóór toewijzing; native ledenevaluatie en late aggregaatfilterscans weigeren ook voorgesteld werk boven hun vaste limieten voordat ze in die scans stappen, en budgetannulering laat live ledenmaskers onaangetast

De formuleparser ondersteunt numerieke constanten, veldnamen, gequote namen, veldgekwalificeerde ledenamen, rekenkunde en vergelijkingen, percent, en ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR en PI; onbekende functies, celverwijzingen, arrays en ongebonden namen worden geweigerd in plaats van gegokte waarden te leveren

Native berekende velden vereisen SUM-data-measures en kunnen geen rij-, kolom- of pagina-as zijn; berekende items vereisen behouden tekenreeksbijschriften in niet-gegroepeerde cachevelden, automatische of SUM-subtotalen, SUM-measures en de ondersteunde identiteit van het gebied met één lid

Onbekende formulefuncties, een niet-nul area fieldPosition, onbekende of misvormde gebiedsmetadata, dubbelzinnige filter-measure-identiteiten en tegelijk actieve basis- en uitgebreide weergavetransformaties worden expliciet geweigerd; deze beperkingen maken van een niet-ondersteunde definitie geen gewoon item

Laat aggregaatfilteren van berekende leden ondersteunt gemodelleerde waardevergelijkingen; legacy-varianten met aantal, percentage en somfilter en niet-gemodelleerde Top-n-metadata vereisen een ondersteund native selectiemodel en weigeren in plaats van bronrecordvergelijkingen te substitueren

Geïmporteerde rauwe onderdelen behouden niet-ondersteunde future-metadata voor gewone roundtrip-bewaring; lokale berekening, getypeerde reconstructie en semantische feature-extractie vereisen een beschikbaar model en vernieuwen geen brondata om ontbrekende cacherecords te fabriceren

Semantische Pivot-cachedefinities omvatten berekende-item-identiteit en formule, datasysteemcontext en losgemaakte begrensde payloads; niet-beschikbare native extensies blijven een expliciete semantische fout