Documentação HotXLS

Seleção de Slicer de Pivot não OLAP

A versão 2.384.88 adiciona seleção tipada de membros aos caches importados de Slicer de Pivot não OLAP que podem ser vinculados a campos de cache locais comuns e às views de tabela dinâmica conectadas a eles

Inspecionar e alterar uma seleção

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 a forma tabular de Pivot; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex e TXLSXSlicerCache.ItemSelected expõem a lista de membros analisada e a seleção

As posições da lista de membros têm base zero; cada ItemCacheIndex identifica um membro compartilhado no campo de cache de Pivot vinculado, de modo que membros de número, texto, Boolean, data, branco e erro retêm identidades separadas mesmo quando o texto exibido deles coincide

TXLSXSlicerCacheItem armazena um CacheItemIndex: Integer e Selected: Boolean; TXLSXSlicerCacheItems é o tipo de array dinâmico dele, enquanto o cache expõe a seleção por meio de propriedades indexadas somente leitura

TXLSXSlicerCache.SetSelectedItems recebe índices de membros compartilhados e retorna 1 em caso de sucesso ou -1 para vinculações sem suporte, inválidas ou inseguras; uma seleção vazia é rejeitada porque o formato de arquivo exige pelo menos um membro selecionado

TXLSXSlicerCache.ClearSelection retorna a mesma convenção de status e seleciona todos os membros; ele remove esta restrição de Slicer mantendo restrições independentes nos outros campos

Views compartilhadas e filtros existentes

Membros selecionados dentro de um cache de Slicer formam uma união; os caches de Slicer aplicáveis se cruzam para cada view explicitamente conectada, inclusive quando o campo selecionado está ausente dos eixos exibidos dessa view; múltiplas views de UI de Slicer de um cache compartilham a mesma seleção

Chame TXLSPivotTable.Make com o result writer da aplicação para calcular os resultados atuais; mudanças de seleção do cache não reescrevem células da planilha nem regeneram todo layout nativo importado

O Excel armazena seleções de Slicer não OLAP como ocultação comum de membros de Pivot e seleção de página; o formato não registra qual operação criou um sinalizador oculto individual

Antes de modificar uma vinculação importada, o HotXLS valida que as máscaras antigas de oculto e de página do mesmo campo dela correspondem à seleção antiga efetiva do Slicer; máscaras correspondentes são tratadas como gerenciadas pelo Slicer, enquanto máscaras inconsistentes ou ambíguas são rejeitadas sem adivinhação; filtros manuais, de página e avançados de campos sem relação permanecem ativos

Salvamento e atualização de fonte

Salvar atualiza a seleção do Slicer e as máscaras conectadas de membros de Pivot juntas, mantém namespaces XML importados e extensões desconhecidas e remapeia conexões de planilha para as identidades salvas delas; identificadores estendidos de cache de Slicer permanecem distintos dos identificadores comuns de cache de Pivot da pasta de trabalho

A atualização local do cache de Pivot retém os índices de membros compartilhados selecionados; subconjuntos explícitos excluem novos membros, enquanto seleções limpas permitem o domínio atualizado completo

Limites e comportamento de falha

Mudanças de seleção validam todas as views e membros conectados antes do commit e usam a guarda de mutação da pasta de trabalho; uma falha preserva a seleção existente, as restrições de view e o XML original

Adicionar, excluir e limpar caches de Slicer também usam a guarda de gravação da pasta de trabalho; uma view congelada da pasta de trabalho não pode mudar resultados conectados de Pivot por meio de mutação de coleção

Excluir um cache de Pivot não OLAP vinculado, ou limpar uma coleção que contenha um, é rejeitado antes da mutação; a operação explícita de ciclo de vida RemoveSlicerCache remove as views nativas dele e limpa ou transfere a seleção dele para máscaras comuns de Pivot

Seleção de OLAP e de cache de tabela, campos de fonte agrupados ou calculados, conexões ausentes, domínios inconsistentes e máscaras importadas ambíguas do mesmo campo permanecem fora desta operação; conteúdos de cache sem suporte retêm a representação original deles

Esta API de seleção lida com caches de Slicer de Pivot importados e criados com suporte; a criação de views compartilhadas e a remoção explícita de cache estão disponíveis na 2.384.94; a materialização segura de planilha pode substituir saída calculada com suporte, enquanto a avaliação de exibição de sem dados de filtro cruzado continua sendo um trabalho separado

Excluir a última view de UI de um cache não OLAP vinculado é rejeitado antes de alterar o desenho, a view ou o cache dele; excluir uma de várias views de UI retém o cache e a seleção compartilhados deles

Limpar as views de Slicer de uma planilha verifica cada cache afetado antes de remover qualquer view; uma view final vinculada causa rejeição atômica, enquanto views compartilhadas com outras planilhas retêm o cache e a seleção delas

Filtros de registro adicionais

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 ou substitui um callback por dono não nil, e TXLSPivotTable.ClearRecordFilter remove o callback desse dono; passar um callback nil a SetRecordFilter também o remove

Callbacks registrados e o TXLSPivotTable.ExternalRecordFilter opcional se cruzam antes dos filtros e da agregação próprios da tabela; a pasta de trabalho registra o callback de Slicer dela de forma independente, de modo que não sobrescreve o predicado do chamador

Callbacks recebem índices de registro com base zero, são fotografados para cada chamada de Make e não são serializados nem copiados por AssignPivotOnly; donos e alvos de callbacks permanecem de propriedade do chamador e devem sobreviver ao registro deles