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ública | Contrato |
|---|---|
TXLSPivotCacheCalculatedItem | Definiçã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: Integer | Identidade de campo de cache de base zero, só de leitura |
TXLSPivotCacheCalculatedItem.ItemIndex: Integer | Identidade de membro partilhado de base zero dentro do FieldIndex, só de leitura |
TXLSPivotCacheCalculatedItem.Formula: WideString | Fó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: Boolean | Disponibilidade 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: WideString | XML 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): TXLSPivotCacheCalculatedItem | Cria 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): TXLSPivotCacheCalculatedItem | Devolve a definição correspondente emprestada ou nil |
TXLSPivotCache.CalculatedItemCount: Integer | Número só de leitura de definições retidas, suportadas ou não suportadas |
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItem | Acesso emprestado só de leitura, de base zero, à lista de definições |
TXLSPivotCache.ClearCalculatedItems | Liberta 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.BindCalculatedItemsToCache | Valida 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ública | Contrato |
|---|---|
TXLSPivotFilter.DataFieldIsMeasureIndex: Boolean | Seleciona 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: Integer | Ordem 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ública | Contrato |
|---|---|
TXLSPivotCache.Date1904: Boolean | Contexto 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 |
TXLSPivotDateSystem | Seleção com tipo de sistema de datas para pré-visualizações e consultas nativas destacadas |
xlpdsCache | Usa o contexto Date1904 retido pela cache sem o mudar |
xlpds1900 | Projeta o sistema de datas 1900 no cálculo destacado |
xlpds1904 | Projeta o sistema de datas 1904 no cálculo destacado |
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean | O 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 object | Callback de metadados da calculadora que lê o sistema de datas atual do livro detentor |
TXLSCalculator.OnGetDate1904: TXLSGetDate1904 | Callback 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