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