HotXLS-documentatie

Transactionele Pivot-cachevernieuwing

Versie 2.384.92 vernieuwt lokale rechthoekige, gedefinieerde-naam- en tabel-Pivot-bronnen zonder bestaande veldobjecten, gedeelde itemobjecten of logische ledenindices te veranderen; alle draaitabelweergaven die de cache delen blijven naar dezelfde leden verwijzen

Werkmap vernieuwen

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

TXLSXWorkbook.RefreshPivotCache geeft 1 terug na een geslaagde vernieuwing en -1 wanneer de cache, bron, schema of bronwaarden niet kunnen worden vernieuwd; de methode leest actuele celwaarden, dus herbereken eerst de werkmap wanneer bronformules geëvalueerd moeten worden

Een rechthoekige bron gebruikt een bestaand lokaal werkblad en een koprij; SourceFirstRow, SourceFirstCol, SourceLastRow en SourceLastCol gebruiken inclusieve 1-based coördinaten, en de eerste rij levert de veldnamen

Gedefinieerde-naam- en tabelbronnen

Wanneer SourceIsNamedRange=True, identificeert SourceName een gedefinieerde naam of een unieke tabelnaam of weergavenaam; vernieuwen en materialisatie lossen bij elke aanroep de actuele geometrie op terwijl de in de cache opgeslagen bronidentiteit behouden blijft

SourceRangeSheet levert de werkbladcontext voor een lokale gedefinieerde naam; die scope gaat vóór een werkmapnaam met dezelfde spelling, en anders lost de resolutie op in de werkmapscope zonder een niet-gerelateerde lokale naam te kiezen

Een gedefinieerde naam moet één expliciet werkbladgekwalificeerde absolute rechthoek bevatten; gequote en Unicode-werkbladnamen worden ondersteund, terwijl relatieve verwijzingen, unies, aliassen, formules, externe verwijzingen en dubbelzinnige naam/tabel-botsingen worden geweigerd vóór mutatie

Een tabel moet een koprij behouden; records volgen de actuele omvang en sluiten een echte totalenrij uit, terwijl botstingscontroles de hele tabel inclusief de totalen beschermen; een tabel met alleen een koprij levert nul records

Het lidmaatschap van fysieke totalen volgt de opgeslagen totalsRowCount, waarvan een afwezige waarde nul betekent; alleen een totalen-UI-hint verwijdert geen datarij, en opslaan schrijft het echte lidmaatschap expliciet weg

Lever voor een geschreven totalenrij geldige metadata voor kolomtotalen en werkbladinhoud via ColumnTotalsRowLabels, ColumnTotalsRowFunctions en ColumnTotalsRowFormulas; het zetten van TotalsRowShown=True maakt geen totalenformules aan en dwingt geen celwaarden af

Werkbladverplaatsingen behouden de lokale naamscope, en werkbladhernoemingen werken ondersteunde lokale verwijzingen en Pivot-broncontext bij terwijl niet-gerelateerde externe verwijzingen en ondoorzichtige geïmporteerde cache-XML behouden blijven; het opslaan van gedefinieerde namen verwijdert een optioneel voorloopgelijkteken in de formule zonder de in-memory formule te wijzigen

Koppen matchen bestaande databasevelden op naam zonder hoofdlettergevoeligheid; het herordenen van bronkolommen behoudt logische veldindices, terwijl dubbele, hernoemde, ontbrekende of extra bronvelden worden geweigerd; lege koppen gebruiken de bestaande FieldN-fallback

Lege broncellen blijven leeg zonder aan de werkbladcelverzameling te worden toegevoegd; bronnen met alleen een koprij leveren nul records terwijl historische leden behouden blijven

Stabiele leden en gedeelde weergaven

Bestaande gedeelde items houden hun indices en objectidentiteiten, en nieuwe getypeerde waarden worden aan het domein toegevoegd; herordenen, verwijderen en later opnieuw invoeren van bronleden behoudt verborgen items, paginaselecties, basisitemverwijzingen en expliciete groepstoewijzingen die die leden al identificeren

Alle weergaven die één cache delen zien de vernieuwde records; afwezige historische leden blijven in het cachedomein maar maken zelf geen aggregaatrijen, omdat TXLSPivotTable.Make resultaten opbouwt uit actuele records

Historische leden worden bewaard ongeacht MissingItemsLimit; dit vernieuwpad ruimt geen ontbrekende leden op, dwingt geen bewaard-ledenlimiet af en nummert selectieindices niet opnieuw

Numerieke, datum-, Boolean-, tekst-, lege en representeerbare foutwaarden behouden hun type tijdens vernieuwing en XLSX-opslag; inhoudsvlaggen van gedeelde items en representeerbare grenzen worden herberekend op basis van het behouden en nieuw toegevoegde domein

Opslaan voltooit vernieuwde weergave-ledenlijsten vóór afsluitende subtotaalitems terwijl bestaande volgorde, verborgen vlaggen en geïmporteerde layoutextensies behouden blijven; paginaselecties worden gemapt tussen logische cacheleden en de in elke weergave opgeslagen posities, dus herordende ledenlijsten selecteren na heropenen nog steeds hetzelfde lid

Berekende en gegroepeerde velden

Berekende velden verbruiken geen bronkolommen; hun namen, formules en gedeelde itemdomeinen blijven beschikbaar, terwijl elk vernieuwd record met een lege placeholder voor die velden begint; Make evalueert ondersteunde berekende formules op basis van de actuele bronwaarden

XLSX-cacheopslagrecords bewaren uitsluitend databasevelden; opslaan en heropenen behouden de uitlijning van bronkolommen, ook wanneer berekende velden tussen databasevelden staan

Numerieke en datumgroepering op een bronveld kan nieuwe leden accepteren; expliciete discrete groepering accepteert herordende bestaande leden maar weigert een nieuw lid zonder expliciete toewijzing, waarbij de volledige vorige cache behouden blijft

Versie 2.384.94 reconstrueert ondersteunde vaste afgeleide gegroepeerde velden uit gevalideerde basis-/ouderkoppelingen; automatische domeinuitbreiding, niet-gemapte discrete leden en ledenpropertyvelden worden transactioneel geweigerd, terwijl externe en OLAP-bronnen buiten het lokale broncontract vallen; zie grenzen van gegroepeerde caches

Atomische updates en callback-vernieuwing

Bronvalidatie, lezen, typeconversie, recordtoewijzing en het opzoeken van leden voltooien in losse staging-gegevens; bij een fout blijven live veld- en itemhandles, records, metadata, rauwe replay-status en alle gedeelde weergaven intact

Bij succes worden record- en opzoekbuffers vervangen, wordt rauwe cache-replay uitgeschakeld, wordt RefreshedDate bijgewerkt en wordt RefreshOnLoad=False gezet; opslaan gebruikt de vernieuwde getypeerde cache in plaats van de vorige rauwe representatie te replayen

Zelfstandige of Classic-gestuurde code kan dezelfde staging-implementatie gebruiken via TXLSPivotCache.RefreshFromSource; zijn lezer ontvangt 1-based broncoördinaten en geeft een Variant terug, en validatie- of leesfouten geven een exception

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

De overload met één argument vereist een concrete lokale rechthoek in de cache; de overload met expliciete grenzen leest een door de aanroeper opgeloste lokale rechthoek zonder de benoemde of tabelbronidentiteit van de cache te wijzigen, en aanroepers blijven verantwoordelijk voor het correct oplossen van die identiteit

Cachevernieuwing werkt cachedata bij; toepassingen kunnen Make aanroepen met hun eigen resultaatwriter of MaterializePivotTable voor bewaakte werkbladuitvoer; getypeerde niet-OLAP Pivot Slicer-selectie is beschikbaar voor ondersteunde geïmporteerde bindingen, terwijl volledige native layout apart werk blijft