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 declaratie | Contract |
|---|---|
TXLSPivotCacheCalculatedItem | Een 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: Integer | Alleen-lezen zero-based cacheveldidentiteit |
TXLSPivotCacheCalculatedItem.ItemIndex: Integer | Alleen-lezen zero-based gedeeld-lid-identiteit binnen FieldIndex |
TXLSPivotCacheCalculatedItem.Formula: WideString | Lees/schrijfbare native ledenformule; het zetten ervan wijzigt het model, terwijl preview of expliciete binding syntaxis en afhankelijkheidscycli valideert vóór berekening |
TXLSPivotCacheCalculatedItem.Supported: Boolean | Alleen-lezen beschikbaarheid van de geparseerde gebiedsidentiteit, geen garantie dat elke formule- of weergavecombinatie evalueerbaar is |
TXLSPivotCacheCalculatedItem.RawXml: WideString | Alleen-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): TXLSPivotCacheCalculatedItem | Maakt 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): TXLSPivotCacheCalculatedItem | Geeft de geleende matchende definitie of nil terug |
TXLSPivotCache.CalculatedItemCount: Integer | Alleen-lezen aantal behouden ondersteunde of niet-ondersteunde definities |
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItem | Alleen-lezen zero-based geleende toegang tot de definitielijst |
TXLSPivotCache.ClearCalculatedItems | Geeft 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.BindCalculatedItemsToCache | Valideert 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 declaratie | Contract |
|---|---|
TXLSPivotFilter.DataFieldIsMeasureIndex: Boolean | Kiest 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: Integer | Lees/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 declaratie | Contract |
|---|---|
TXLSPivotCache.Date1904: Boolean | Lees/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 |
TXLSPivotDateSystem | Getypeerde keuze van datasysteem voor losgemaakte native previews en query's |
xlpdsCache | Gebruik de bewaarde Date1904-context van de cache zonder die te wijzigen |
xlpds1900 | Projecteer het 1900-datasysteem in de losgemaakte berekening |
xlpds1904 | Projecteer het 1904-datasysteem in de losgemaakte berekening |
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean | De native layout-helper op lager niveau accepteert dezelfde losgemaakte datasysteemkeuze na zijn ResultXml- en Reason-uitvoerparameters |
TXLSGetDate1904 = function: Boolean of object | Metadata-callback van de calculator die het actuele datasysteem van de beherende werkmap leest |
TXLSCalculator.OnGetDate1904: TXLSGetDate1904 | Optionele 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