Campos de Pivot calculados nativos e itens de propriedade do cache
Calcular a partir de somas de contexto
Para um campo de cache calculado local, a preview nativa primeiro soma cada campo de banco de dados referenciado no contexto de folha, subtotal ou total geral solicitado e depois avalia a fórmula; dependências podem permanecer ausentes dos campos de dados exibidos
Por exemplo, dois registros 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 somas de dependência dele em vez de somar as proporções exibidas
Itens calculados avaliam referências de membro em cada contexto de folha completo, incluindo os outros eixos de linha e coluna; subtotais e totais gerais incluem as contribuições de membros resultantes, de modo que um item de proporção pode contribuir com uma soma das proporções de folha dele
Um membro oculto manualmente permanece disponível quando outro item calculado o referencia, enquanto a contribuição própria dele fica fora dos totais exibidos; 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 de itens primeiro atualizam as somas de campos de banco de dados referenciados, depois o campo calculado avalia essas somas de contexto atualizadas
Itens calculados podem pertencer a vários campos não agrupados; a ordem de definição de cache retida determina qual fórmula de campo grava uma interseção por último, de modo que mover uma definição pode mudar tanto essa interseção quanto os totais exibidos
Uma dependência de membro calculado não resolvida avalia quando é referenciada, incluindo uma dependência definida mais tarde nessa ordem; um membro já calculado em uma etapa anterior retém o valor de interseção atual dele quando outra fórmula o referencia
Somas de campos nativos ignoram valores de fonte Boolean e de texto, retêm valores numéricos e de data e propagam erros tipados de fonte; IF e IFERROR lazy podem tratar um erro sem avaliar um ramo não usado
Propriedade do cache e vinculação
| Declaração pública | Contrato |
|---|---|
TXLSPivotCacheCalculatedItem | Uma definição nativa de membro calculado de propriedade do cache; obtenha-a por meio do cache proprietário e mantenha o cache vivo enquanto usa o objeto emprestado |
TXLSPivotCacheCalculatedItem.FieldIndex: Integer | Identidade de campo de cache com base zero, somente leitura |
TXLSPivotCacheCalculatedItem.ItemIndex: Integer | Identidade de membro compartilhado com base zero dentro de FieldIndex, somente leitura |
TXLSPivotCacheCalculatedItem.Formula: WideString | Fórmula nativa de membro de leitura e gravação; defini-la altera o modelo, enquanto a preview ou a vinculação explícita valida a sintaxe e os ciclos de dependência antes de calcular |
TXLSPivotCacheCalculatedItem.Supported: Boolean | Disponibilidade somente leitura da identidade de área analisada, e não uma garantia de que toda combinação de fórmula ou view possa ser avaliada |
TXLSPivotCacheCalculatedItem.RawXml: WideString | XML preservado somente leitura para uma definição de item calculado sem suporte; definições tipadas conhecidas usam uma string vazia |
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItem | Cria uma definição tipada com suporte para um membro existente, rejeitando identidades inválidas, fórmula vazia ou identidade de destino duplicada; o objeto retornado pertence ao cache |
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItem | Retorna a definição correspondente emprestada ou nil |
TXLSPivotCache.CalculatedItemCount: Integer | Número somente leitura de definições retidas com ou sem suporte |
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItem | Acesso emprestado somente leitura com base zero à lista de definições |
TXLSPivotCache.ClearCalculatedItems | Libera as definições próprias e invalida os handles emprestados; não remove membros compartilhados nem estabelece completude de consulta do cache |
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer) | Move uma definição existente entre posições com base zero na ordem de solução nativa, preservando a identidade de objeto emprestada dela; posições inválidas disparam EArgumentOutOfRangeException sem mover definições |
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString) | Hook de preservação orientado ao parser que retém XML desconhecido e marca o modelo de consulta do cache como incompleto |
TXLSPivotCache.Assign(Source: TXLSPivotCache) | Copia em profundidade definições, campos, membros compartilhados, índices de registro e contexto de sistema de data; os handles de fonte permanecem independentes, e atribuir o mesmo cache a si mesmo é seguro |
TXLSPivotTable.BindCalculatedItemsToCache | Valida e vincula itens calculados criados na view em um cache desanexado, depois anexa os novos membros compartilhados e definições ao cache vivo; falhas deixam identidades de membros e definições inalteradas, enquanto handles existentes de campo e membro permanecem válidos |
Um item criado na view com TXLSPivotField.AddCalculatedItem precisa de BindCalculatedItemsToCache explícito antes da materialização nativa ou da reconstrução nativa tipada; importar uma definição de cache nativa com suporte já fornece essa propriedade
A vinculação do cache afeta toda view que compartilha esse cache, então chame-a como uma operação de criação e retenha os handles emprestados apenas até a lista correspondente ser limpa, atribuída ou destruída
Filtros de membros e transformações de exibição
Comparações de legenda e de valor em um campo de item calculado selecionam os membros exibidos depois que as fórmulas de membro rodam; membros de fonte filtrados permanecem disponíveis para as fórmulas referenciadas, e subtotais e totais gerais visíveis excluem as contribuições diretas desses membros
Uma comparação de valor pode selecionar uma medida calculada; cada membro candidato avalia essa medida a partir das somas de dependência de contexto dele, em vez de somar proporções de registros de fonte ou tratar a fórmula como uma coluna de registro de cache
Resultados de itens calculados também aceitam as transformações ShowDataAs modeladas, incluindo porcentagens, índice, diferenças, totais acumulados, porcentagens de totais acumulados e classificações; membros ocultos ficam fora das sequências visíveis de acumulado e classificação, enquanto as referências de fórmula retêm seus valores originais
| Declaração pública | Contrato |
|---|---|
TXLSPivotFilter.DataFieldIsMeasureIndex: Boolean | Seleciona o domínio de identidade de DataField; False retém a identidade existente de campo de cache com base zero, enquanto True identifica uma posição de medida de dados exibida com base zero e é definido quando o iMeasureFld nativo é importado |
TXLSPivotFilter.SourceOrder: Integer | Ordem global com base zero de leitura e gravação retida do elemento filters nativo, com -1 como padrão quando ausente; o cálculo local e a gravação tipada usam primeiro EvalOrder não negativo, depois SourceOrder, depois a ordem estável de campo/lista |
A gravação nativa tipada converte uma identidade de campo de cache na posição de medida exibida dela; um campo de cache usado por várias medidas de dados precisa de uma posição de medida explícita, porque sua agregação e identidade de exibição seriam ambíguas de outra forma
O Excel pode salvar filtros ativos com evalOrder=-1 preservando a ordem de avaliação deles por meio da sequência do elemento filters; importar, clonar e a reconstrução tipada retêm essa sequência em vez de tratar esses filtros como inativos
Alterar uma definição de filtro ou a posição de fonte retida dela em uma view nativa importada e preservada exige reconstrução tipada; a adoção nativa comum valida a identidade de filtro preservada e rejeita edições sem suporte antes de gravar as células do relatório
Preview, consultas e sistemas de data
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;
MakePreview com AUseNativeGrandTotals=True usa uma tabela e um cache desanexados, incluindo somas nativas exatas e identidades de itens calculados; o Make comum e o MakePreview padrão retêm seu comportamento existente de cálculo baseado em registros
GetDataValue usa somas de contexto nativas quando o cache tem campos ou itens calculados, e GETPIVOTDATA compartilha esse caminho de consulta; nenhuma das operações atualiza dados de fonte, recalcula fórmulas de planilha inspecionadas ou grava células de relatório
| Declaração pública | Contrato |
|---|---|
TXLSPivotCache.Date1904: Boolean | Contexto de sistema de data de fonte de leitura e gravação para cálculos nativos autônomos; tem False como padrão e é vinculado durante a importação Classic e XLSX e a criação de cache de planilha, e durante a cópia de cache XLSX |
TXLSPivotDateSystem | Seleção tipada de sistema de data para previews e consultas nativas desanexadas |
xlpdsCache | Usa o contexto Date1904 retido do cache sem alterá-lo |
xlpds1900 | Projeta o sistema de data 1900 no cálculo desanexado |
xlpds1904 | Projeta o sistema de data 1904 no cálculo desanexado |
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean | O helper nativo de layout de nível mais baixo aceita a mesma seleção de sistema de data desanexada depois dos parâmetros de saída ResultXml e Reason dele |
TXLSGetDate1904 = function: Boolean of object | Callback de metadados da calculadora que lê o sistema de data atual da pasta de trabalho proprietária |
TXLSCalculator.OnGetDate1904: TXLSGetDate1904 | Callback emprestado opcional usado por GETPIVOTDATA; nil usa o contexto do cache, enquanto os avaliadores da pasta de trabalho e as views somente leitura deles fornecem a configuração atual da pasta de trabalho |
Chamadores autônomos devem fornecer o contexto Date1904 correto do cache ou uma seleção explícita de sistema de data; a materialização nativa de propriedade da pasta de trabalho e as consultas de fórmula projetam a configuração atual da pasta de trabalho sem modificar o cache vivo
Valores de fonte de data permanecem valores TDateTime absolutos no cache, enquanto fórmulas numéricas nativas usam seriais de data 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 propriedade da saída nativa salva registra o contexto de sistema de data dela e compara valores de data estilizados com o payload numérico serializado deles; salvar, reabrir ou alterar a base de data da pasta de trabalho preserva a propriedade legítima, enquanto payloads de data, Boolean, erro e texto alterados ainda rejeitam a sobregravação
Orçamentos e entrada sem suporte
O callback opcional TlxPivotQueryBudget recebe incrementos de trabalho e uma estimativa de memória atual, incluindo o snapshot desanexado proposto e o armazenamento de fórmula; False aborta com EXLSPivotQueryBudget e exceções de callback propagam
Larguras de registro e identidades de membros de banco de dados são verificadas antes da clonagem; compilação e avaliação de fórmula cobram trabalho, e o cálculo retém profundidade de sintaxe limitada, texto de fórmula, domínios de membros calculados e armazenamento de acumulador
O planejamento de itens calculados limita os domínios de membros combinados, o armazenamento de legendas e os planos de campo antes da alocação; a avaliação nativa de membros e as varreduras tardias de filtro de agregação também rejeitam trabalho proposto acima dos limites fixos delas antes de entrar nessas varreduras, e o cancelamento de orçamento deixa as máscaras de membros vivas inalteradas
O parser de fórmula aceita constantes numéricas, nomes de campo, nomes entre aspas, nomes de membros qualificados por campo, aritmética e comparações, porcentagem e ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR e PI; funções desconhecidas, referências de célula, arrays e nomes não vinculados são rejeitados em vez de fornecer valores supostos
Campos calculados nativos exigem medidas de dados SUM e não podem ser eixos de linha, coluna ou página; itens calculados exigem legendas de string retidas em campos de cache não agrupados, subtotais automáticos ou SUM, medidas SUM e a identidade de área de membro único com suporte
Funções de fórmula desconhecidas, fieldPosition de área diferente de zero, metadados de área desconhecidos ou malformados, identidades ambíguas de medida de filtro e transformações de exibição básicas e estendidas mutuamente ativas são rejeitados explicitamente; essas restrições não transformam uma definição sem suporte em um item comum
A filtragem tardia de agregação de membros calculados aceita comparações de valor modeladas; as variantes legadas de filtro de contagem, porcentagem e soma e os metadados Top n não modelados exigem um modelo nativo de seleção com suporte e são rejeitados em vez de substituir comparações de registros de fonte
Partes brutas importadas retêm metadados futuros sem suporte para a preservação comum de roundtrip; cálculo local, reconstrução tipada e extração semântica de recursos exigem um modelo disponível e não atualizam dados de fonte para fabricar registros de cache ausentes
Definições semânticas de cache de Pivot incluem identidade e fórmula de item calculado, contexto de sistema de data e payloads desanexados limitados; extensões nativas indisponíveis continuam sendo um erro semântico explícito