HotXLS-dokumentation

Transaktionell uppdatering av pivotcache

Version 2.384.92 uppdaterar lokala Pivot-källor av typen rektangel, definierat namn och tabell utan att befintliga fältobjekt, delade objekt eller logiska medlemsindex ändras; alla pivottabellvyer som delar cachen fortsätter att peka på samma medlemmar

Arbetsboksuppdatering

Workbook.Recalculate;
if Workbook.RefreshPivotCache(Pivot.CacheId) <> 1 then
  raise Exception.Create('Pivot cache refresh failed');

TXLSXWorkbook.RefreshPivotCache returnerar 1 efter en lyckad uppdatering och -1 när cachen, källan, schemat eller källvärdena inte kan uppdateras; metoden läser aktuella cellvärden, så omberäkna arbetsboken först när källformler behöver utvärderas

En rektangulär källa använder ett befintligt lokalt kalkylblad och en rubrikrad; SourceFirstRow, SourceFirstCol, SourceLastRow och SourceLastCol använder inklusiva ettbaserade koordinater, och första raden bidrar med fältnamn

Källor med definierat namn och tabellkällor

När SourceIsNamedRange=True identifierar SourceName ett definierat namn eller ett unikt tabellnamn eller visningsnamn; uppdatering och materialisering slår fast dess aktuella geometri vid varje anrop, medan källidentiteten som lagrats i cachen bevaras

SourceRangeSheet tillhandahåller kalkylbladskontexten för ett lokalt definierat namn; det scopeet har företräde framför ett arbetsboksnamn med samma stavning, och i övrigt använder uppslagningen arbetsboksscopeat utan att välja ett orelaterat lokalt namn

Ett definierat namn måste innehålla exakt en uttryckligen bladkvalificerad absolut rektangel; citerade och Unicode-kalkylbladsnamn stöds, medan relativa referenser, föreningar, alias, formler, externa referenser och tvetydiga namn-/tabellkollisioner avslås innan någon ändring görs

En tabell måste behålla en rubrikrad; poster följer tabellens aktuella omfattning och exkluderar en verklig summorad, medan kollisionskontroller skyddar hela tabellen inklusive summorna; en tabell med bara rubrik bidrar med noll poster

Fysiskt summeradsmedlemskap följer den lagrade totalsRowCount, vars saknade värde betyder noll; enbart en UI-ledtråd om summerad tar inte bort en datarad, och sparandet skriver uttryckligen ut det faktiska medlemskapet

För en författad summerad, tillhandahåll giltig metadata för kolumnsummor och kalkylbladsinnehåll via ColumnTotalsRowLabels, ColumnTotalsRowFunctions och ColumnTotalsRowFormulas; att sätta TotalsRowShown=True skapar inga summerformler och tvingar inte fram cellvärden

Flytt av kalkylblad behåller det lokala namnscopeat, och namnbyte av kalkylblad uppdaterar stödda lokala referenser och Pivot-källkontext medan orelaterade externa referenser och ogenomskinlig importerad cache-XML bevaras; sparande av definierade namn tar bort ett valfritt inledande likhetstecken i formeln utan att formeln i minnet ändras

Rubriker matchas mot befintliga databasfält per namn utan skiftlägeskänslighet; omordning av källkolumner bevarar logiska fältindex, medan dubbletter, omdöpta, saknade eller extra källfält avslås; tomma rubriker använder den befintliga FieldN-reserven

Tomma källceller förblir tomma utan att läggas till i kalkylbladets cellsamling; källor med bara rubrik ger noll poster men behåller historiska medlemmar

Stabila medlemmar och delade vyer

Befintliga delade objekt behåller sina index och objektidentiteter, och nya typade värden läggs till i domänen; omordning, borttag och senare återinförande av källmedlemmar bevarar dolda objekt, sidval, basobjektreferenser och uttryckliga grupperingsmappningar som redan identifierar de medlemmarna

Alla vyer som delar en cache ser de uppdaterade posterna; frånvarande historiska medlemmar finns kvar i cachedomänen men skapar inte aggregeringsrader av sig själva, eftersom TXLSPivotTable.Make bygger resultat från aktuella poster

Historiska medlemmar behålls oavsett MissingItemsLimit; den här uppdateringsvägen rensar inte bort saknade medlemmar, tillämpar ingen gräns för behållna medlemmar och numrerar inte om valindex

Numeriska värden, datum, Boolean-värden, text, tomma värden och representerbara felvärden behåller sina typer genom uppdateringen och XLSX-sparningen; innehållsflaggorna för delade objekt och de representerbara gränserna räknas om från den behållna och nytilförda domänen

Sparandet fullbordar uppdaterade vy medlemslistor före avslutande delsummorposter medan befintlig ordning, dolda flaggor och importerade layouttillägg bevaras; sidval mappas mellan logiska cachemedlemmar och de positioner som lagrats i varje vy, så omordnade medlemslistor väljer fortfarande samma medlem efter återöppning

Beräknade och grupperade fält

Beräknade fält förbrukar inga källkolumner; deras namn, formler och delade objektdomäner finns kvar, medan varje uppdaterad post börjar med en tom platshållare för de fälten; Make utvärderar stödda beräknade formler från aktuella källvärden

XLSX cacheposter lagrar bara databasfält; sparande och återöppning bevarar källkolumnjusteringen även när beräknade fält förekommer mellan databasfält

Numerisk och datumbaserad gruppering på ett källfält kan acceptera nya medlemmar; uttrycklig diskret gruppering accepterar omordnade befintliga medlemmar men avslår en ny medlem utan uttrycklig mappning, med hela den tidigare cachen bevarad

Version 2.384.94 rekonstruerar stödda fasta härledda grupperade fält från validerade bas-/föräldralänkar; automatisk domänexpansion, omappade diskreta medlemmar och medlemsegenskapsfält avslås transaktionellt, medan externa och OLAP-källor förblir utanför det lokala källkontraktet; se gränser för grupperade cacher

Atomära uppdateringar och callback-uppdatering

Källvalidering, inläsning, typkonvertering, postallokering och medlemssökning fullbordas i fristående mellanlagringsdata; ett fel lämnar levande fält- och objekthandtag, poster, metadata, rått uppspelningstillstånd och alla delade vyer orörda

En lyckad körning ersätter post- och uppslagsbuffertar, inaktiverar rå cacheuppspelning, uppdaterar RefreshedDate och sätter RefreshOnLoad=False; sparandet använder den uppdaterade typade cachen i stället för att spela upp dess tidigare råa representation

Fristående eller Classic-baserad kod kan använda samma mellanlagringsimplementering via TXLSPivotCache.RefreshFromSource; dess läsare tar emot ettbaserade källkoordinater och returnerar en Variant, och validerings- eller läsfel utlöser ett undantag

TlxPivotSourceCellValue = function(ARow, ACol: Integer): Variant of object;
procedure TXLSPivotCache.RefreshFromSource(AValueReader: TlxPivotSourceCellValue);
procedure TXLSPivotCache.RefreshFromSource(AValueReader: TlxPivotSourceCellValue;
  AFirstRow, AFirstCol, ALastRow, ALastCol: Integer);

Överladdningen med ett argument kräver en konkret lokal rektangel i cachen; överladdningen med explicita gränser läser en uppringarlöst lokal rektangel utan att cachens namn- eller tabellkällidentitet ändras, och uppringaren ansvarar fortfarande för att lösa den identiteten rätt

Cacheuppdateringen uppdaterar cachedata; program kan anropa Make med en egen resultatskrivare eller MaterializePivotTable för skyddad kalkylbladsutmatning; typat icke-OLAP Pivot Slicer-val finns för stödda importerade bindningar, medan komplett inbyggd layout förblir separat arbete