Documentazione HotXLS

Selezione dei Slicer pivot non-OLAP

La versione 2.384.88 aggiunge la selezione tipizzata dei membri alle cache dei Slicer pivot non-OLAP importate che possono essere legate a campi ordinari della cache locale e alle loro viste di tabella pivot collegate

Ispezionare e modificare una selezione

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 identifica la forma pivot tabellare; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex e TXLSXSlicerCache.ItemSelected espongono la lista dei membri analizzata e la selezione

Le posizioni nella lista dei membri sono a base zero; ogni ItemCacheIndex identifica uno shared member nel campo della cache pivot collegata, quindi membri numerici, testuali, Boolean, di data, vuoti ed errore conservano identità separate anche quando il loro testo mostrato coincide

TXLSXSlicerCacheItem memorizza un CacheItemIndex: Integer e uno Selected: Boolean; TXLSXSlicerCacheItems è il suo tipo di array dinamico, mentre la cache espone la selezione tramite proprietà indicizzate in sola lettura

TXLSXSlicerCache.SetSelectedItems accetta indici di shared member e restituisce 1 in caso di successo o -1 per binding non supportati, non validi o non sicuri; una selezione vuota viene rifiutata perché il formato di file richiede almeno un membro selezionato

TXLSXSlicerCache.ClearSelection restituisce la stessa convenzione di stato e seleziona tutti i membri; rimuove questo vincolo del Slicer conservando le restrizioni indipendenti sugli altri campi

Viste condivise e filtri esistenti

I membri selezionati dentro una cache Slicer formano un'unione; le cache Slicer applicabili si intersecano per ogni vista esplicitamente collegata, anche quando il campo selezionato è assente dagli assi mostrati di quella vista; più viste UI Slicer di una stessa cache condividono la stessa selezione

Chiama TXLSPivotTable.Make con il writer dei risultati dell'applicazione per calcolare i risultati correnti; le modifiche alla selezione della cache non riscrivono le celle del foglio né rigenerano ogni layout nativo importato

Excel memorizza le selezioni dei Slicer non-OLAP come occultamento ordinario dei membri pivot e selezione di pagina; il formato non registra quale operazione abbia creato un singolo flag nascosto

Prima di modificare un binding importato, HotXLS valida che le sue vecchie maschere nascosto e pagina dello stesso campo corrispondano alla vecchia selezione effettiva del Slicer; le maschere corrispondenti vengono trattate come gestite dal Slicer, mentre maschere incoerenti o ambigue vengono rifiutate senza tirare a indovinare; i filtri manuali, di pagina e avanzati sugli altri campi restano attivi

Salvataggio e aggiornamento della sorgente

Il salvataggio aggiorna insieme la selezione del Slicer e le maschere dei membri pivot collegati, conserva i namespace XML importati e le estensioni sconosciute e rimappa le connessioni ai fogli alle loro identità salvate; gli identificatori estesi della cache Slicer restano distinti dagli identificatori ordinari delle cache pivot del workbook

L'aggiornamento locale della cache pivot conserva gli indici degli shared member selezionati; i sottoinsiemi espliciti escludono i nuovi membri, mentre le selezioni azzerate consentono il dominio aggiornato completo

Confini e comportamento in caso di errore

Le modifiche alla selezione validano tutte le viste e i membri collegati prima del commit e usano la guardia di mutazione del workbook; un fallimento preserva la selezione esistente, le restrizioni delle viste e l'XML originale

Anche aggiungere, eliminare e svuotare cache Slicer usa la guardia di scrittura del workbook; una vista del workbook bloccata non può cambiare i risultati pivot collegati tramite mutazioni delle collezioni

Eliminare una cache pivot non-OLAP collegata, o svuotare una collezione che la contiene, viene rifiutato prima della mutazione; l'operazione esplicita del ciclo di vita RemoveSlicerCache rimuove le sue viste native e azzera la selezione o la trasferisce alle maschere pivot ordinarie

Selezione OLAP e di cache a tabella, campi sorgente raggruppati o calcolati, connessioni mancanti, domini incoerenti e maschere importate ambigue sullo stesso campo restano fuori da questa operazione; i contenuti della cache non supportati conservano la loro rappresentazione originale

Questa API di selezione gestisce le cache Slicer pivot importate e create dall'autore in modo supportato; la creazione di viste condivise e la rimozione esplicita della cache sono disponibili nella 2.384.94; la materializzazione sicura nel foglio può sostituire l'output calcolato supportato, mentre la valutazione della visualizzazione cross-filter senza dati resta un lavoro separato

Eliminare l'ultima vista UI di una cache non-OLAP collegata viene rifiutato prima di cambiarne disegno, vista o cache; eliminare una tra più viste UI conserva la cache condivisa e la selezione

Svuotare le viste Slicer di un foglio di lavoro controlla ogni cache interessata prima di rimuovere qualunque vista; un'ultima vista collegata causa un rifiuto atomico, mentre le viste condivise con altri fogli conservano la loro cache e selezione

Filtri aggiuntivi sui record

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 registra o sostituisce una callback per ogni proprietario non nil, e TXLSPivotTable.ClearRecordFilter rimuove la callback di quel proprietario; passare una callback nil a SetRecordFilter la rimuove comunque

Le callback registrate e la TXLSPivotTable.ExternalRecordFilter opzionale si intersecano prima dei filtri e dell'aggregazione propri della tabella; il workbook registra la sua callback dei Slicer indipendentemente, quindi non sovrascrive il predicato del chiamante

Le callback ricevono indici di record a base zero, vengono scattate a snapshot a ogni chiamata di Make e non vengono serializzate né copiate da AssignPivotOnly; i proprietari e i target delle callback restano di proprietà del chiamante e devono sopravvivere alla loro registrazione