Inbyggda beräknade pivotfält och cacheägda objekt
Beräkna från kontextsummor
För ett lokalt beräknat cacheutfält summerar den inbyggda förhandsvisningen först alla refererade databasfält i den begärda löv-, delsumma- eller totalsummakontexten och utvärderar sedan formeln; beroenden kan saknas bland de visade datafälten
Till exempel ger två poster med Amount/Units-värdena 10/1 och 30/9 ett inbyggt beräknat fältresultat på 40/10 = 4, och en totalsumma utvärderar sina egna beroendesummor i stället för att addera visade kvoter
Beräknade objekt utvärderar medlemsreferenser i varje komplett lövkontext, inklusive de andra rad- och kolumnaxlarna; delsummor och totalsummor inkluderar de resulterande medlemsbidragen, så ett kvotobjekt kan bidra med en summa av sina lövkvoter
En manuellt dold medlem förblir tillgänglig när ett annat beräknat objekt refererar till den, medan dess eget bidrag hålls utanför visade totaler; för A=40 och B=60 ger dold A fortfarande Combined=A+B värdet 100 och inkluderar Combined i den synliga totalsumman
När beräknade fält och objekt samexisterar uppdaterar objektbidragen först sina refererade databasfältsummor, därefter utvärderar det beräknade fältet de uppdaterade kontextsummorna
Beräknade objekt kan höra till flera ogrupperade fält; den behållna cachedefinitionsordningen avgör vilken fältformel som skriver en skärning sist, så en flytt av en definition kan ändra både den skärningen och de visade totalerna
Ett olöst beroende för en beräknad medlem utvärderas när det refereras, inklusive ett beroende definierat senare i den ordningen; en medlem som redan beräknats i ett tidigare steg behåller sitt aktuella skärningsvärde när en annan formel refererar till den
Inbyggda fältsummor ignorerar Boolean- och textkällvärden, behåller numeriska värden och datum och propagerar typade källfel; lat IF och IFERROR kan hantera ett fel utan att utvärdera en oanvänd gren
Cacheägarskap och bindning
| Publik deklaration | Kontrakt |
|---|---|
TXLSPivotCacheCalculatedItem | En cacheägd inbyggd definition av beräknad medlem; hämta den via den ägande cachen och håll cachen vid liv medan det lånade objektet används |
TXLSPivotCacheCalculatedItem.FieldIndex: Integer | Skrivskyddad nollbaserad cachefältidentitet |
TXLSPivotCacheCalculatedItem.ItemIndex: Integer | Skrivskyddad nollbaserad delad medlemsidentitet inom FieldIndex |
TXLSPivotCacheCalculatedItem.Formula: WideString | Inbyggd medlemsformel med läs-/skrivåtkomst; en tilldelning ändrar modellen, medan förhandsvisning eller uttrycklig bindning validerar syntax och beroendecykler före beräkningen |
TXLSPivotCacheCalculatedItem.Supported: Boolean | Skrivskyddad tillgänglighet för den tolkade områdesidentiteten, inte en garanti för att varje formel- eller vykombination kan utvärderas |
TXLSPivotCacheCalculatedItem.RawXml: WideString | Skrivskyddad bevarad XML för en definition av beräknat objekt som inte stöds; kända typade definitioner använder en tom sträng |
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItem | Skapar en stödd typad definition för en befintlig medlem och avslår ogiltiga identiteter, en tom formel eller duplicerad målidentitet; det returnerade objektet tillhör cachen |
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItem | Returnerar den lånade matchande definitionen eller nil |
TXLSPivotCache.CalculatedItemCount: Integer | Skrivskyddat antal behållna definitioner, stödda som ostödda |
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItem | Skrivskyddad nollbaserad lånad åtkomst till definitionslistan |
TXLSPivotCache.ClearCalculatedItems | Frigör de ägda definitionerna och ogiltigförklarar lånade handtag; den tar inte bort delade medlemmar eller etablerar cachefrågefullständighet |
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer) | Flyttar en befintlig definition mellan nollbaserade positioner i den inbyggda lösningsordningen och bevarar dess lånade objektidentitet; ogiltiga positioner utlöser EArgumentOutOfRangeException utan att definitioner flyttas |
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString) | Parsarorienterad bevarandekrok som behåller okänd XML och markerar cachens frågemodell som ofullständig |
TXLSPivotCache.Assign(Source: TXLSPivotCache) | Djupkopierar definitioner, fält, delade medlemmar, postindex och datasystemkontext; källhandtagen förblir oberoende, och att tilldela samma cache till sig själv är säkert |
TXLSPivotTable.BindCalculatedItemsToCache | Validerar och binder vyförfattade beräknade objekt på en fristående cache och lägger sedan till de nya delade medlemmarna och definitionerna i den aktiva cachen; fel lämnar medlemsidentiteter och definitioner oförändrade, medan befintliga fält- och medlemshandtag förblir giltiga |
Ett vyförfattat objekt skapat med TXLSPivotField.AddCalculatedItem behöver uttrycklig BindCalculatedItemsToCache före inbyggd materialisering eller typad inbyggd rekonstruktion; import av en stödd inbyggd cachedefinition tillhandahåller redan det ägarskapet
Cachebindningen påverkar varje vy som delar cachen, så anropa den som en författaråtgärd och behåll de lånade handtagen bara tills motsvarande lista rensas, tilldelas eller förstörs
Medlemsfilter och visningstransformationer
Bildtext- och värdejämförelser på ett fält med beräknade objekt väljer visade medlemmar efter att medlemsformlerna körts; filtrerade källmedlemmar förblir tillgängliga för refererade formler, och synliga delsummor och totalsummor utesluter de medlemmarnas direkta bidrag
En värdejämförelse kan välja ett beräknat mått; varje kandidatmedlem utvärderar det måttet från sina beroendesummor i kontexten, i stället för att addera källpostkvoter eller behandla formeln som en cachepostkolumn
Resultat för beräknade objekt stöder också de modellerade ShowDataAs-transformationerna, inklusive procentsatser, index, differenser, löpande totaler, procentsatser av löpande totaler och rangordningar; dolda medlemmar hålls utanför synliga löpande sekvenser och rangordningar, medan formelreferenser behåller sina ursprungliga värden
| Publik deklaration | Kontrakt |
|---|---|
TXLSPivotFilter.DataFieldIsMeasureIndex: Boolean | Väljer identitetsdomänen för DataField; False behåller den befintliga nollbaserade cachefältidentiteten, medan True identifierar en nollbaserad visad datamättposition och sätts när inbyggd iMeasureFld importeras |
TXLSPivotFilter.SourceOrder: Integer | Läs-/skrivbar nollbaserad global ordning som behållits från det inbyggda filters-elementet, med -1 som standard när den saknas; lokal beräkning och typad skrivning använder icke-negativ EvalOrder först, sedan SourceOrder, sedan stabil fält-/listordning |
Typad inbyggd skrivning konverterar en cachefältidentitet till sin visade mättposition; ett cachefält som används av flera datamätt behöver en uttrycklig mättposition, eftersom dess aggregerings- och visningsidentitet annars skulle vara tvetydig
Excel kan spara aktiva filter med evalOrder=-1 samtidigt som deras utvärderingsordning bevaras via filters-elementsekvensen; import, kloning och typad rekonstruktion behåller den sekvensen i stället för att behandla de filtren som inaktiva
Att ändra en filterdefinition eller dess behållna källposition i en importerad bevarad inbyggd vy kräver typad rekonstruktion; vanligt inbyggt antagande validerar bevarad filteridentitet och avslår redigeringar som inte stöds innan rapportceller skrivs
Förhandsvisning, frågor och datasystem
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 med AUseNativeGrandTotals=True använder en fristående tabell och cache, inklusive exakta inbyggda summor och identiteter för beräknade objekt; vanlig Make och standard MakePreview behåller sitt befintliga postbaserade beräkningsbeteende
GetDataValue använder inbyggda kontextsummor när cachen har beräknade fält eller objekt, och GETPIVOTDATA delar den frågevägen; ingen av åtgärderna uppdaterar källdata, omberäknar granskade kalkylbladsformler eller skriver rapportceller
| Publik deklaration | Kontrakt |
|---|---|
TXLSPivotCache.Date1904: Boolean | Läs-/skrivbar källdatasystemkontext för fristående inbyggda beräkningar; den är False som standard och binds vid Classic- och XLSX-import, vid skapande av kalkylbladscacher och vid XLSX-cachekopiering |
TXLSPivotDateSystem | Typat datasystemval för fristående inbyggda förhandsvisningar och frågor |
xlpdsCache | Använd cachens behållna Date1904-kontext utan att ändra den |
xlpds1900 | Projicera 1900-datasystemet in i den fristående beräkningen |
xlpds1904 | Projicera 1904-datasystemet in i den fristående beräkningen |
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean | Hjälpfunktionen för inbyggd layout på lägre nivå accepterar samma fristående datasystemval efter sina ResultXml- och Reason-utdataparametrar |
TXLSGetDate1904 = function: Boolean of object | Kalkulatormetadatacallback som läser den nuvarande ägande arbetsbokens datasystem |
TXLSCalculator.OnGetDate1904: TXLSGetDate1904 | Valfri lånad callback som används av GETPIVOTDATA; nil använder cachekontext, medan arbetsboksutvärderare och deras skrivskyddade vyer tillhandahåller arbetsbokens aktuella inställning |
Fristående uppringare måste tillhandahålla rätt cache-Date1904-kontext eller ett uttryckligt datasystemval; arbetsboksägd inbyggd materialisering och formelfrågor projicerar arbetsbokens aktuella inställning utan att ändra den aktiva cachen
Datumkällvärden förblir absoluta TDateTime-värden i cachen, medan inbyggda numeriska formler använder Excel-datumserier; 1904-systemet drar av 1462 dagar per datumvärde, och 1900-konverteringen hanterar de representerbara datumen före mars 1900
Ägarskap för sparat inbyggt utdata registrerar sin datasystemkontext och jämför formaterade datumvärden mot sin serialiserade numeriska nyttolast; sparande, återöppning eller ändring av arbetsbokens databas bevarar legitimt ägarskap, medan ändrade datum-, Boolean-, fel- och textnyttolaster fortfarande avslår överskrivning
Budgeter och indata som inte stöds
Den valfria TlxPivotQueryBudget-callbacken tar emot arbetsökningar och en aktuell minnesuppskattning, inklusive den föreslagna fristående ögonblicksbilden och formellagring; False avbryter med EXLSPivotQueryBudget, och callback-undantag propageras
Postbredder och databasmedlemsidentiteter kontrolleras före kloningen; formelkompilering och utvärdering debiterar arbete, och beräkningen behåller avgränsat syntaxdjup, formeltext, domäner för beräknade medlemmar och ackumulatorlagring
Planering av beräknade objekt begränsar kombinerade medlemsdomäner, bildtextlagring och fältplaner före allokeringen; inbyggd medlemsutvärdering och sena aggregeringsfilterskanningar avslår också föreslaget arbete över sina fasta gränser innan skanningarna påbörjas, och budgetavbrott lämnar aktiva medlemsmasker oförändrade
Formelparsaren stöder numeriska konstanter, fältnamn, citerade namn, fältkvalificerade medlemsnamn, aritmetik och jämförelser, procent, samt ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR och PI; okända funktioner, cellreferenser, matriser och obundna namn avslås i stället för att leverera gissade värden
Inbyggda beräknade fält kräver SUM-datamätt och kan inte vara rad-, kolumn- eller sidaxlar; beräknade objekt kräver behållna strängbildtexter i ogrupperade cachefält, automatiska delsummor eller SUM, SUM-mått och den stödda områdesidentiteten för en enskild medlem
Okända formelfunktioner, områdes-fieldPosition skilt från noll, okänd eller felformad områdesmetadata, tvetydiga filtermättsidentiteter och ömsesidigt aktiva grundläggande och utökade visningstransformationer avslås uttryckligen; de här begränsningarna gör inte en ostödd definition till ett vanligt objekt
Sen aggregeringsfiltrering av beräknade medlemmar stöder modellerade värdejämförelser; äldre varianter av antal-, procent- och summafilter samt omodellerad Top n-metadata kräver en stödd inbyggd urvalsmodell och avslås i stället för att ersättas med källpostjämförelser
Importerade rådelar behåller metadata för framtida funktioner som inte stöds, för vanlig roundtrip-bevarande; lokal beräkning, typad rekonstruktion och semantisk funktionsextraktion kräver en tillgänglig modell och uppdaterar inte källdata för att framställa saknade cacheposter
Semantiska Pivot-cachedefinitioner omfattar identitet och formel för beräknade objekt, datasystemkontext och fristående avgränsade nyttolaster; otillgängliga inbyggda utbyggnader förblir ett uttryckligt semantiskt fel