Selección de Slicers de tablas dinámicas no OLAP
La versión 2.384.88 agrega selección de miembros con tipo a los cachés importados de Slicers de tablas dinámicas no OLAP que pueden enlazarse a campos locales ordinarios de caché y a sus vistas conectadas de tablas dinámicas
Inspeccionar y cambiar una selección
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 tabular de la tabla dinámica; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex y TXLSXSlicerCache.ItemSelected exponen la lista de miembros analizada y la selección
Las posiciones de la lista de miembros están basadas en cero; cada ItemCacheIndex identifica un miembro compartido en el campo del caché de la tabla dinámica enlazado, de modo que los miembros numéricos, de texto, Boolean, de fechas, en blanco y de error conservan identidades separadas incluso cuando su texto mostrado coincide
TXLSXSlicerCacheItem almacena un CacheItemIndex: Integer y un Selected: Boolean; TXLSXSlicerCacheItems es su tipo de arreglo dinámico, mientras que el caché expone la selección a través de propiedades indexadas de solo lectura
TXLSXSlicerCache.SetSelectedItems recibe índices de miembros compartidos y devuelve 1 en caso de éxito o -1 para enlaces no admitidos, inválidos o inseguros; una selección vacía se rechaza porque el formato de archivo exige al menos un miembro seleccionado
TXLSXSlicerCache.ClearSelection devuelve la misma convención de estado y selecciona todos los miembros; elimina esta restricción del Slicer mientras conserva las restricciones independientes sobre otros campos
Vistas compartidas y filtros existentes
Los miembros seleccionados dentro de un caché de Slicer forman una unión; los cachés de Slicers aplicables se intersectan para cada vista conectada explícitamente, incluso cuando el campo seleccionado está ausente de los ejes mostrados de esa vista; varias vistas de UI de Slicers de un mismo caché comparten la misma selección
Llame a TXLSPivotTable.Make con el escritor de resultados de la aplicación para calcular los resultados actuales; los cambios de selección del caché no reescriben celdas de la hoja ni regeneran cada diseño nativo importado
Excel almacena las selecciones de Slicers no OLAP como ocultamiento ordinario de miembros de tablas dinámicas y selección de página; el formato no registra qué operación creó un indicador oculto individual
Antes de modificar un enlace importado, HotXLS valida que sus máscaras antiguas de ocultamiento y página del mismo campo coincidan con la selección antigua efectiva del Slicer; las máscaras coincidentes se tratan como administradas por el Slicer, mientras que las máscaras inconsistentes o ambiguas se rechazan sin suposiciones; los filtros manuales, de página y avanzados de campos no relacionados permanecen activos
Guardado y actualización de la fuente
El guardado actualiza juntas la selección del Slicer y las máscaras conectadas de miembros de la tabla dinámica, conserva los espacios de nombres XML importados y las extensiones desconocidas, y remapea las conexiones de hojas a sus identidades guardadas; los identificadores extendidos de cachés de Slicers permanecen distintos de los identificadores ordinarios de cachés de tablas dinámicas del libro
La actualización local del caché de tablas dinámicas retiene los índices de miembros compartidos seleccionados; los subconjuntos explícitos excluyen los miembros nuevos, mientras que las selecciones limpiadas permiten el dominio actualizado completo
Límites y comportamiento ante fallas
Los cambios de selección validan todas las vistas y miembros conectados antes de la confirmación y usan el guardián de mutación del libro; una falla preserva la selección existente, las restricciones de la vista y el XML original
Agregar, eliminar y limpiar cachés de Slicers también usan el guardián de escritura del libro; una vista de libro congelada no puede cambiar los resultados conectados de tablas dinámicas mediante mutación de colecciones
Eliminar un caché de tabla dinámica no OLAP enlazado, o limpiar una colección que contenga uno, se rechaza antes de la mutación; la operación explícita de ciclo de vida RemoveSlicerCache elimina sus vistas nativas y limpia o transfiere su selección a máscaras ordinarias de tablas dinámicas
La selección de cachés OLAP y de tablas, los campos de fuente agrupados o calculados, las conexiones faltantes, los dominios inconsistentes y las máscaras importadas ambiguas del mismo campo quedan fuera de esta operación; los contenidos de caché no admitidos conservan su representación original
Esta API de selección maneja cachés de Slicers de tablas dinámicas importados y escritos por el autor admitidos; la creación de vistas compartidas y la eliminación explícita de cachés están disponibles en 2.384.94; la materialización segura de hojas puede reemplazar la salida calculada admitida, mientras que la evaluación de visualización de ausencia de datos con filtro cruzado sigue siendo un trabajo separado
Eliminar la última vista de UI de un caché no OLAP enlazado se rechaza antes de cambiar su dibujo, vista o caché; eliminar una de varias vistas de UI conserva su caché y selección compartidos
Limpiar las vistas de Slicers de una hoja comprueba cada caché afectado antes de eliminar cualquier vista; una vista final enlazada provoca rechazo atómico, mientras que las vistas compartidas con otras hojas conservan su caché y selección
Filtros de registros adicionales
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 reemplaza una devolución de llamada por propietario no nil, y TXLSPivotTable.ClearRecordFilter elimina la devolución de llamada de ese propietario; pasar una devolución de llamada nil a SetRecordFilter también la elimina
Las devoluciones de llamada registradas y el TXLSPivotTable.ExternalRecordFilter opcional se intersectan antes de los filtros y la agregación propios de la tabla; el libro registra su devolución de llamada de Slicer de forma independiente, de modo que no sobreescribe el predicado del llamador
Las devoluciones de llamada reciben índices de registros basados en cero, se toman como instantánea para cada llamada de Make, y no se serializan ni se copian con AssignPivotOnly; los propietarios y los objetivos de las devoluciones de llamada siguen siendo de propiedad del llamador y deben sobrevivir a su registro