Documentação HotXLS

Campos de tabelas dinâmicas calculados nativos e itens detidos pela cache

Calcular a partir de somas de contexto

Num campo de cache calculado local, a pré-visualização nativa soma primeiro todos os campos de bases de dados referenciados no contexto de folha, subtotal ou total geral pedido e só depois avalia a fórmula; as dependências podem manter-se ausentes dos campos de dados apresentados

Por exemplo, dois registos com valores Amount/Units de 10/1 e 30/9 produzem um resultado de campo calculado nativo de 40/10 = 4, e um total geral avalia as suas próprias somas de dependências em vez de somar rácios apresentados

Os itens calculados avaliam referências de membros em cada contexto de folha completo, incluindo os outros eixos de linha e coluna; os subtotais e os totais gerais incluem as contribuições resultantes dos membros, pelo que um item de rácio pode contribuir com a soma dos seus rácios de folha

Um membro oculto manualmente continua disponível quando outro item calculado o referencia, enquanto a sua própria contribuição fica fora dos totais apresentados; para A=40 e B=60, ocultar A ainda dá a Combined=A+B o valor 100 e inclui Combined no total geral visível

Quando campos e itens calculados coexistem, as contribuições dos itens primeiro atualizam as somas dos campos de bases de dados referenciados, e depois o campo calculado avalia essas somas de contexto atualizadas

Os itens calculados podem pertencer a vários campos não agrupados; a ordem retida das definições da cache determina que fórmula de campo escreve por último uma interseção, pelo que mover uma definição pode mudar essa interseção e os totais apresentados

Uma dependência de membro calculado por resolver avalia quando é referenciada, incluindo uma dependência definida mais tarde nessa ordem; um membro já calculado num passo anterior mantém o valor atual da respetiva interseção quando outra fórmula o referencia

As somas nativas de campos ignoram valores de origem Boolean e de texto, retêm valores numéricos e de data e propagam erros de origem com tipo; um IF ou IFERROR lazy pode tratar um erro sem avaliar um ramo não usado

Detenção pela cache e binding

Declaração públicaContrato
TXLSPivotCacheCalculatedItemDefinição nativa de membro calculado detida pela cache; obtenha-a através da cache detentora e mantenha a cache viva enquanto usar o objeto emprestado
TXLSPivotCacheCalculatedItem.FieldIndex: IntegerIdentidade de campo de cache de base zero, só de leitura
TXLSPivotCacheCalculatedItem.ItemIndex: IntegerIdentidade de membro partilhado de base zero dentro do FieldIndex, só de leitura
TXLSPivotCacheCalculatedItem.Formula: WideStringFórmula nativa de membro, de leitura e escrita; defini-la muda o modelo, enquanto a pré-visualização ou o binding explícito validam a sintaxe e os ciclos de dependências antes de calcular
TXLSPivotCacheCalculatedItem.Supported: BooleanDisponibilidade só de leitura da identidade de área analisada, em vez de uma garantia de que qualquer combinação de fórmula ou vista pode ser avaliada
TXLSPivotCacheCalculatedItem.RawXml: WideStringXML preservado só de leitura para uma definição de item calculado não suportada; as definições com tipo conhecidas usam uma cadeia vazia
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItemCria uma definição com tipo suportada para um membro existente, rejeitando identidades inválidas, uma fórmula vazia ou identidade alvo duplicada; o objeto devolvido pertence à cache
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItemDevolve a definição correspondente emprestada ou nil
TXLSPivotCache.CalculatedItemCount: IntegerNúmero só de leitura de definições retidas, suportadas ou não suportadas
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItemAcesso emprestado só de leitura, de base zero, à lista de definições
TXLSPivotCache.ClearCalculatedItemsLiberta as definições detidas e invalida os handles emprestados; não remove membros partilhados nem estabelece a integridade de consulta da cache
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer)Move uma definição existente entre posições de base zero na ordem de resolução nativa, preservando a identidade do objeto emprestado; posições inválidas lançam EArgumentOutOfRangeException sem mover definições
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString)Gancho de preservação orientado ao parser que retém XML desconhecido e marca o modelo de consulta da cache como incompleto
TXLSPivotCache.Assign(Source: TXLSPivotCache)Copia em profundidade definições, campos, membros partilhados, índices de registos e contexto de sistema de datas; os handles da origem mantêm-se independentes, e atribuir a cache a ela própria é seguro
TXLSPivotTable.BindCalculatedItemsToCacheValida e vincula itens calculados escritos pela vista numa cache destacada e, em seguida, acrescenta os novos membros partilhados e definições à cache viva; as falhas deixam identidades de membros e definições inalteradas, enquanto os handles existentes de campos e membros continuam válidos

Um item escrito pela vista criado com TXLSPivotField.AddCalculatedItem precisa de BindCalculatedItemsToCache explícito antes da materialização nativa ou da reconstrução nativa com tipo; importar uma definição nativa de cache suportada já fornece essa detenção

O binding da cache afeta todas as vistas que partilham essa cache, por isso chame-o como uma operação de autoria e retenha os handles emprestados apenas até a lista correspondente ser limpa, atribuída ou destruída

Filtros de membros e transformações de apresentação

As comparações de legenda e de valor num campo de itens calculados selecionam membros apresentados depois de as fórmulas de membros correrem; os membros de origem filtrados continuam disponíveis para as fórmulas referenciadas, e os subtotais e totais gerais visíveis excluem as contribuições diretas desses membros

Uma comparação de valores pode selecionar uma medida calculada; cada membro candidato avalia essa medida a partir das respetivas somas de dependências de contexto, em vez de somar rácios de registos de origem ou tratar a fórmula como uma coluna de registos da cache

Os resultados de itens calculados também suportam as transformações ShowDataAs modeladas, incluindo percentagens, índice, diferenças, totais acumulados, percentagens de totais acumulados e classificações; os membros ocultos ficam fora das sequências visíveis de acumulados e classificações, enquanto as referências de fórmulas mantêm os valores originais

Declaração públicaContrato
TXLSPivotFilter.DataFieldIsMeasureIndex: BooleanSeleciona o domínio de identidade do DataField; False mantém a identidade existente de campo de cache de base zero, enquanto True identifica uma posição de medida de dados apresentada de base zero e é definido quando o iMeasureFld nativo é importado
TXLSPivotFilter.SourceOrder: IntegerOrdem global de base zero, de leitura e escrita, retida do elemento nativo de filtros, com predefinição -1 quando ausente; o cálculo local e a escrita com tipo usam primeiro o EvalOrder não negativo, depois o SourceOrder e por fim a ordem estável de campo/lista

A escrita nativa com tipo converte uma identidade de campo de cache na respetiva posição de medida apresentada; um campo de cache usado por várias medidas de dados precisa de uma posição de medida explícita, porque a agregação e a identidade de apresentação seriam de outra forma ambíguas

O Excel pode gravar filtros ativos com evalOrder=-1 preservando a ordem de avaliação através da sequência do elemento de filtros; importar, clonar e a reconstrução com tipo retêm essa sequência em vez de tratar esses filtros como inativos

Mudar uma definição de filtro ou a respetiva posição de origem retida numa vista nativa importada e preservada exige reconstrução com tipo; a adoção nativa comum valida a identidade preservada do filtro e rejeita edições não suportadas antes de escrever células de relatório

Pré-visualização, consultas e sistemas de datas

function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter;
  ALayoutWriter: TlxPivotLayoutWriter;
  AUseNativeGrandTotals: Boolean = False;
  ABudget: TlxPivotQueryBudget = nil;
  ADateSystem: TXLSPivotDateSystem = xlpdsCache): Integer;

function TXLSPivotTable.GetDataValue(const ADataField: WideString;
  const AConstraints: TXLSPivotDataConstraints;
  ABudget: TlxPivotQueryBudget; out AValue: Variant;
  ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean;

O MakePreview com AUseNativeGrandTotals=True usa uma tabela e uma cache destacadas, incluindo somas nativas exatas e identidades de itens calculados; o Make comum e o MakePreview predefinido mantêm o comportamento existente de cálculo baseado em registos

O GetDataValue usa somas nativas de contexto quando a cache tem campos ou itens calculados, e o GETPIVOTDATA partilha esse caminho de consulta; nenhuma das operações atualiza dados de origem, recalcula fórmulas de folhas de cálculo inspecionadas nem escreve células de relatório

Declaração públicaContrato
TXLSPivotCache.Date1904: BooleanContexto de sistema de datas da origem, de leitura e escrita, para cálculos nativos autónomos; assume False por predefinição e é vinculado durante a importação Classic e XLSX e a criação de caches de folhas de cálculo, e durante a cópia de caches XLSX
TXLSPivotDateSystemSeleção com tipo de sistema de datas para pré-visualizações e consultas nativas destacadas
xlpdsCacheUsa o contexto Date1904 retido pela cache sem o mudar
xlpds1900Projeta o sistema de datas 1900 no cálculo destacado
xlpds1904Projeta o sistema de datas 1904 no cálculo destacado
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): BooleanO auxiliar nativo de layout de nível mais baixo aceita a mesma seleção destacada de sistema de datas após os parâmetros de saída ResultXml e Reason
TXLSGetDate1904 = function: Boolean of objectCallback de metadados da calculadora que lê o sistema de datas atual do livro detentor
TXLSCalculator.OnGetDate1904: TXLSGetDate1904Callback emprestado opcional usado pelo GETPIVOTDATA; nil usa o contexto da cache, enquanto os avaliadores de livros e as respetivas vistas só de leitura fornecem a definição atual do livro

Os chamadores autónomos têm de fornecer o contexto Date1904 correto da cache ou uma seleção explícita de sistema de datas; a materialização nativa detida pelo livro e as consultas de fórmulas projetam a definição atual do livro sem modificar a cache viva

Os valores de origem de datas mantêm-se valores TDateTime absolutos na cache, enquanto as fórmulas numéricas nativas usam seriais de datas do Excel; o sistema 1904 subtrai 1462 dias por valor de data, e a conversão 1900 trata as datas representáveis antes de março de 1900

A detenção da saída nativa gravada regista o respetivo contexto de sistema de datas e compara valores de datas com estilo contra o payload numérico serializado; gravar, reabrir ou mudar a base de datas do livro preserva a detenção legítima, enquanto payloads alterados de datas, Boolean, erros e texto continuam a rejeitar a sobrescrita

Orçamentos e entrada não suportada

O callback opcional TlxPivotQueryBudget recebe incrementos de trabalho e uma estimativa de memória atual, incluindo a snapshot destacada proposta e o armazenamento de fórmulas; False aborta com EXLSPivotQueryBudget e as exceções do callback propagam-se

A largura dos registos e as identidades de membros de bases de dados são verificadas antes da clonagem; a compilação e a avaliação de fórmulas cobram trabalho, e o cálculo retém profundidade de sintaxe limitada, texto de fórmulas, domínios de membros calculados e armazenamento de acumuladores

O planeamento de itens calculados limita os domínios combinados de membros, o armazenamento de legendas e os planos de campos antes da alocação; a avaliação nativa de membros e os varrimentos tardios de filtros agregados também rejeitam o trabalho proposto acima dos respetivos limites fixos antes de entrar nesses varrimentos, e o cancelamento pelo orçamento deixa as máscaras de membros vivas inalteradas

O parser de fórmulas suporta constantes numéricas, nomes de campos, nomes entre aspas, nomes de membros qualificados por campo, aritmética e comparações, percentagem, e ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR e PI; funções desconhecidas, referências de células, matrizes e nomes não vinculados provocam rejeição em vez de fornecer valores inventados

Os campos calculados nativos exigem medidas de dados SUM e não podem ser eixos de linha, coluna ou página; os itens calculados exigem legendas de cadeia retidas em campos de cache não agrupados, subtotais automáticos ou SUM, medidas SUM e a identidade de área de membro único suportada

Funções de fórmulas desconhecidas, fieldPosition de área diferente de zero, metadados de área desconhecidos ou malformados, identidades de medidas de filtros ambíguas e transformações de apresentação básicas e estendidas ativas em simultâneo provocam rejeição explícita; estas restrições não transformam uma definição não suportada num item comum

A filtragem tardia de agregados de membros calculados suporta comparações de valores modeladas; as variantes legadas de filtros de contagem, percentagem e soma e os metadados Top n não modelados exigem um modelo nativo de seleção suportado e provocam rejeição em vez de substituir comparações de registos de origem

As partes brutas importadas retêm metadados futuros não suportados para preservação comum de roundtrip; o cálculo local, a reconstrução com tipo e a extração semântica de funcionalidades exigem um modelo disponível e não atualizam dados de origem para fabricar registos de cache em falta

As definições semânticas de caches de tabelas dinâmicas incluem identidade e fórmula de itens calculados, contexto de sistema de datas e payloads destacados com limites; as extensões nativas indisponíveis mantêm-se um erro semântico explícito