HotXLS-dokumentation

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 deklarationKontrakt
TXLSPivotCacheCalculatedItemEn 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: IntegerSkrivskyddad nollbaserad cachefältidentitet
TXLSPivotCacheCalculatedItem.ItemIndex: IntegerSkrivskyddad nollbaserad delad medlemsidentitet inom FieldIndex
TXLSPivotCacheCalculatedItem.Formula: WideStringInbyggd 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: BooleanSkrivskyddad tillgänglighet för den tolkade områdesidentiteten, inte en garanti för att varje formel- eller vykombination kan utvärderas
TXLSPivotCacheCalculatedItem.RawXml: WideStringSkrivskyddad 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): TXLSPivotCacheCalculatedItemSkapar 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): TXLSPivotCacheCalculatedItemReturnerar den lånade matchande definitionen eller nil
TXLSPivotCache.CalculatedItemCount: IntegerSkrivskyddat antal behållna definitioner, stödda som ostödda
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItemSkrivskyddad nollbaserad lånad åtkomst till definitionslistan
TXLSPivotCache.ClearCalculatedItemsFrigö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.BindCalculatedItemsToCacheValiderar 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 deklarationKontrakt
TXLSPivotFilter.DataFieldIsMeasureIndex: BooleanVä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: IntegerLä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 deklarationKontrakt
TXLSPivotCache.Date1904: BooleanLä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
TXLSPivotDateSystemTypat datasystemval för fristående inbyggda förhandsvisningar och frågor
xlpdsCacheAnvänd cachens behållna Date1904-kontext utan att ändra den
xlpds1900Projicera 1900-datasystemet in i den fristående beräkningen
xlpds1904Projicera 1904-datasystemet in i den fristående beräkningen
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): BooleanHjälpfunktionen för inbyggd layout på lägre nivå accepterar samma fristående datasystemval efter sina ResultXml- och Reason-utdataparametrar
TXLSGetDate1904 = function: Boolean of objectKalkulatormetadatacallback som läser den nuvarande ägande arbetsbokens datasystem
TXLSCalculator.OnGetDate1904: TXLSGetDate1904Valfri 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