Docs HotXLS

Sélection de slicer Pivot non OLAP

La version 2.384.88 ajoute la sélection typée de membres aux caches de slicers Pivot non OLAP importés qui peuvent être liés à des champs de cache locaux ordinaires et à leurs vues de tableau croisé dynamique connectées

Inspecter et modifier une sélection

SlicerCache := Workbook.SlicerCaches.FindByName('SlicerCategory');
if (SlicerCache = nil) or not SlicerCache.IsNonOlapPivot then
  raise Exception.Create('A non-OLAP Pivot Slicer cache is required');
if SlicerCache.SetSelectedItems([1]) <> 1 then
  raise Exception.Create('Slicer selection could not be changed');

TXLSXSlicerCache.IsNonOlapPivot identifie la forme Pivot tabulaire ; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex et TXLSXSlicerCache.ItemSelected exposent la liste de membres analysée et la sélection

Les positions de la liste de membres sont en base zéro ; chaque ItemCacheIndex identifie un membre partagé dans le champ du cache Pivot lié, donc les membres nombre, texte, Boolean, date, vide et erreur gardent des identités distinctes même quand leur texte affiché coïncide

TXLSXSlicerCacheItem stocke un CacheItemIndex: Integer et un Selected: Boolean ; TXLSXSlicerCacheItems est son type de tableau dynamique, tandis que le cache expose la sélection via des propriétés indexées en lecture seule

TXLSXSlicerCache.SetSelectedItems prend des indices de membres partagés et renvoie 1 en cas de succès ou -1 pour des liaisons non prises en charge, invalides ou dangereuses ; une sélection vide est rejetée car le format de fichier exige au moins un membre sélectionné

TXLSXSlicerCache.ClearSelection suit la même convention de statut et sélectionne tous les membres ; il retire cette contrainte de slicer tout en gardant les restrictions indépendantes sur les autres champs

Vues partagées et filtres existants

Les membres sélectionnés au sein d'un même cache de slicer forment une union ; les caches de slicers applicables s'intersectent pour chaque vue explicitement connectée, y compris quand le champ sélectionné est absent des axes affichés de cette vue ; plusieurs vues UI de slicer d'un même cache partagent la même sélection

Appelez TXLSPivotTable.Make avec le writer de résultats de l'application pour calculer les résultats courants ; les changements de sélection du cache ne réécrivent pas les cellules de la feuille et ne régénèrent pas chaque disposition native importée

Excel stocke les sélections de slicers non OLAP comme un masquage ordinaire de membres Pivot et une sélection de page ; le format n'enregistre pas quelle opération a créé un indicateur de masquage donné

Avant de modifier une liaison importée, HotXLS vérifie que ses anciens masques hidden et page du même champ correspondent à l'ancienne sélection effective du slicer ; les masques concordants sont traités comme gérés par le slicer, tandis que des masques incohérents ou ambigus sont rejetés sans deviner ; les filtres manuels, de page et avancés des autres champs restent actifs

Enregistrement et actualisation de la source

L'enregistrement met à jour ensemble la sélection du slicer et les masques de membres Pivot connectés, conserve les espaces de noms XML importés et les extensions inconnues, et remappe les connexions de feuilles vers leurs identités enregistrées ; les identifiants étendus de caches de slicers restent distincts des identifiants ordinaires de caches Pivot du classeur

L'actualisation locale du cache Pivot conserve les indices de membres partagés sélectionnés ; les sous-ensembles explicites excluent les nouveaux membres, tandis que des sélections effacées autorisent le domaine actualisé complet

Limites et comportement en cas d'échec

Les changements de sélection valident toutes les vues et tous les membres connectés avant le commit et emploient la garde de mutation du classeur ; un échec préserve la sélection existante, les restrictions de vues et le XML d'origine

L'ajout, la suppression et le vidage de caches de slicers emploient aussi la garde d'écriture du classeur ; une vue de classeur figée ne peut pas changer les résultats Pivot connectés par mutation de collections

Supprimer un cache Pivot non OLAP lié, ou vider une collection qui en contient un, est rejeté avant mutation ; l'opération explicite de cycle de vie RemoveSlicerCache supprime ses vues natives et efface ou transfère sa sélection vers des masques Pivot ordinaires

La sélection OLAP et de caches de tables, les champs sources groupés ou calculés, les connexions manquantes, les domaines incohérents et les masques importés ambigus d'un même champ restent hors de cette opération ; les contenus de cache non pris en charge conservent leur représentation d'origine

Cette API de sélection gère les caches de slicers Pivot importés et créés de façon prise en charge ; la création de vues partagées et la suppression explicite de caches sont disponibles en 2.384.94 ; la matérialisation sûre en feuille peut remplacer une sortie calculée prise en charge, tandis que l'évaluation d'affichage cross-filter sans données reste un travail séparé

Supprimer la dernière vue UI d'un cache non OLAP lié est rejeté avant toute modification de son dessin, de sa vue ou de son cache ; supprimer l'une de plusieurs vues UI conserve leur cache et leur sélection partagés

Vider les vues de slicers d'une feuille vérifie chaque cache affecté avant de supprimer la moindre vue ; une dernière vue liée provoque un rejet atomique, tandis que les vues partagées avec d'autres feuilles conservent leur cache et leur sélection

Filtres d'enregistrements supplémentaires

TlxPivotRecordFilter = function(ATable: TXLSPivotTable;
  ARecordIndex: Integer): Boolean of object;
procedure TXLSPivotTable.SetRecordFilter(AOwner: TObject;
  AFilter: TlxPivotRecordFilter);
procedure TXLSPivotTable.ClearRecordFilter(AOwner: TObject);
property TXLSPivotTable.ExternalRecordFilter: TlxPivotRecordFilter;

TXLSPivotTable.SetRecordFilter enregistre ou remplace un callback par propriétaire non nil, et TXLSPivotTable.ClearRecordFilter retire le callback de ce propriétaire ; passer un callback nil à SetRecordFilter le retire aussi

Les callbacks enregistrés et le TXLSPivotTable.ExternalRecordFilter facultatif s'intersectent avant les filtres et l'agrégation propres à la table ; le classeur enregistre son callback de slicer indépendamment, si bien qu'il n'écrase pas le prédicat de l'appelant

Les callbacks reçoivent des indices d'enregistrements en base zéro, sont photographiés à chaque appel de Make et ne sont ni sérialisés ni copiés par AssignPivotOnly ; les propriétaires et cibles de callbacks restent détenus par l'appelant et doivent survivre à leur enregistrement