Skip to content

method DefSubTotal

Saulo Martins edited this page Jul 4, 2026 · 1 revision

DefSubTotal

:DefSubTotal(cChave,lSubTotal,lTotalGeral,lAgrupar,nNivel)
Cria a definição de subtotal e agrupamento para o Alias2Tab


Parâmetros

Parâmetro Tipo Descrição Obrigatório Obs
cChave caractere Campo chave do subtotal - gera subtotal a cada mudança de valor X
lSubTotal lógico Cria subtotal a cada modificação da chave
lTotalGeral lógico Cria total geral
lAgrupar lógico Agrupa as linhas (estrutura de tópicos)
nNivel numérico Nível para exibir: 1=Total Geral, 2=SubTotal, 3=Linhas

Retorno

Nulo


AddSubTotal

:AddSubTotal(cCampo,cFuncao,bFormula,bAdvpl,bAdvplExib,xValorIni)
Adiciona uma coluna à definição de subtotal.

Parâmetros

Parâmetro Tipo Descrição Obrigatório Obs
cCampo caractere Nome do campo X
cFuncao caractere Função a ser totalizada (tabela abaixo) Default "9" (Somar)
bFormula bloco de código Bloco com retorno da fórmula - enviar quando cFuncao="formula" Recebe {|cLinIni,cLinFim,cColuna,cChave,lTotalGeral| ...}
bAdvpl bloco de código Bloco AdvPL para acumular o subtotal da coluna Recebe {|aValAtu,xValor| ...}
bAdvplExib bloco de código Bloco para exibição da linha de subtotal Recebe {|aValAtu| ...}
xValorIni variant Valor inicial do acumulador

Funções (cFuncao)

Valor Descrição
"1" Média
"2" Cont.Núm
"3" Cont.Valores
"4" Máximo
"5" Mínimo
"9" Soma (padrão)
"last" Último conteúdo do grupo
"formula" Usa o bloco bFormula para montar a fórmula

Exemplo

Local oExcel := custom.excel.Xlsx():New(cNomeFile="TstYExcel",cTipo="A")
oExcel:ADDPlan(cNome="SB1",cCor="E26B0A")
SB1->(DBSetOrder(4)) //B1_FILIAL, B1_GRUPO, B1_COD
SB1->(DbGoTop())
oExcel:DefSubTotal(cChave="B1_GRUPO",lSubTotal=.T.,lTotalGeral=.T.,lAgrupar=.T.,nNivel=2)
oExcel:AddSubTotal(cCampo="B1_GRUPO",cFuncao="last") //Último conteúdo
oExcel:AddSubTotal(cCampo="B1_PRV1",cFuncao="9")     //Somar
oExcel:AddSubTotal(cCampo="B1_PICM",cFuncao="1")     //Média
//Fórmula customizada com acumulador AdvPL
oExcel:AddSubTotal(cCampo="B1_LOCPAD",cFuncao="formula";
	,bFormula={|cLinIni,cLinFim,cColuna,cChave,lTotalGeral| "SUBTOTAL(3,"+cColuna+cLinIni+":"+cColuna+cLinFim+")" };
	,bAdvpl={|aValAtu,xValor| aValAtu[1]+=1 };
	,bAdvplExib={|aValAtu,xValor| cValToChar(aValAtu[1]) };
	,xValorIni=0)
oExcel:Alias2Tab(cAlias="SB1",lSx3=.T.)
oExcel:Save(GetTempPath())
oExcel:OpenApp()
oExcel:Close()

Obs

Deve ser chamado antes do Alias2Tab.
Os números de função seguem a função SUBTOTAL do Excel.


Clone this wiki locally