- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Não repetir cabeçalho no treports
×
Linguagem de Programação ADVPL
Perguntas Não repetir cabeçalho no treports
- adrianocarneirocosta
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 15
- Obrigados Recebidos: 0
8 anos 3 meses atrás #30968
por adrianocarneirocosta
Não repetir cabeçalho no treports foi criado por adrianocarneirocosta
Boa noite,
Gostaria de sabe como faço para não fica repetir o cabeçalho neste fonte?
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "TBICONN.CH"
#DEFINE CRLF CHR(13) + CHR(10)
User Function PEC000003()
Local aRegs := {}
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Declaracao de variaveis ? ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Private oReport := {}, oSection1 := {}
Private cPerg := PadR("PEC000003", Len(SX1->X1_GRUPO))
aAdd(aRegs,{cPerg,'01','Emissao de ?' ,'','','mv_ch1','D', 08,0,0,'G','','mv_par01','','','','','',''})
aAdd(aRegs,{cPerg,'02','Emissao Ate ?' ,'','','mv_ch2','D', 08,0,0,'G','','mv_par02','','','','','',''})
aAdd(aRegs,{cPerg,'03','Filial De ?' ,'','','mv_ch3','C', 04,0,0,'G','','mv_par03','','','','','',''})
aAdd(aRegs,{cPerg,'04','Filial Ate ?' ,'','','mv_ch4','C', 04,0,0,'G','','mv_par04','','','','','',''})
aAdd(aRegs,{cPerg,'05','Grupo De ?' ,'','','mv_ch5','C', 04,0,0,'G','','mv_par05','','','','','',''})
aAdd(aRegs,{cPerg,'06','Grupo Ate ?' ,'','','mv_ch6','C', 04,0,0,'G','','mv_par06','','','','','',''})
aAdd(aRegs,{cPerg,'07','Tipo De ?' ,'','','mv_ch7','C', 02,0,0,'G','','mv_par07','','','','','',''})
aAdd(aRegs,{cPerg,'08','Tipo Ate ?' ,'','','mv_ch8','C', 02,0,0,'G','','mv_par08','','','','','',''})
aAdd(aRegs,{cPerg,'09','Familia ?' ,'','','mv_ch9','C', 02,0,0,'G','','mv_par09','','','','','',''})
DbSelectArea('SX1')
SX1->(DbSetOrder(1))
For nX:=1 to Len(aRegs)
If RecLock('SX1',Iif(!SX1->(DbSeek(PadR(aRegs[nx][01],10)+aRegs[nx][02])),.T.,.F.))
Replace SX1->X1_GRUPO With aRegs[nx][01]
Replace SX1->X1_ORDEM With aRegs[nx][02]
Replace SX1->X1_PERGUNTE With aRegs[nx][03]
Replace SX1->X1_PERSPA With aRegs[nx][04]
Replace SX1->X1_PERENG With aRegs[nx][05]
Replace SX1->X1_VARIAVL With aRegs[nx][06]
Replace SX1->X1_TIPO With aRegs[nx][07]
Replace SX1->X1_TAMANHO With aRegs[nx][08]
Replace SX1->X1_DECIMAL With aRegs[nx][09]
Replace SX1->X1_PRESEL With aRegs[nx][10]
Replace SX1->X1_GSC With aRegs[nx][11]
Replace SX1->X1_VALID With aRegs[nx][12]
Replace SX1->X1_VAR01 With aRegs[nx][13]
Replace SX1->X1_DEF01 With aRegs[nx][14]
Replace SX1->X1_DEF02 With aRegs[nx][15]
Replace SX1->X1_DEF03 With aRegs[nx][16]
Replace SX1->X1_DEF04 With aRegs[nx][17]
Replace SX1->X1_DEF05 With aRegs[nx][18]
Replace SX1->X1_F3 With aRegs[nx][19]
MsUnlock('SX1')
Else
Help('',1,'REGNOIS')
Endif
Next nX
ReportDef()
oReport:PrintDialog()
Return
Static Function ReportDef()
oReport := TReport():New("PEC000003","Relatorio de Vendas por grupo",cPerg,{|oReport| PrintReport(oReport)}," Resumo por grupo")
oReport:SetLandscape(.T.)
if !Empty(oReport:uParam)
Pergunte(oReport:uParam,.F.)
endif
//Primeira Sessao dados da Campanha
oSection1 := TRSection():New( oReport , "Cabecalho", {"QRY1"} )
TRCell():New(oSection1,"D2_FILIAL" ,"QRY1" ,"Filial" , , 10)
TRCell():New(oSection1,"D2_GRUPO" ,"QRY1" ,"Grupo" , , 10)
TRCell():New(oSection1,"QUANTIDADE" ,"QRY1" ,"Quantidade" , , 10)
TRCell():New(oSection1,"VALOR" ,"QRY1" ,"Valor total" , "@E 999,999,999.99" , 10)
TRFunction():New(oSection1:Cell("QUANTIDADE"),/*cId*/,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F.,.T.,.F.,oSection1)
TRFunction():New(oSection1:Cell("VALOR"),/*cId*/,"SUM",/*oBreak*/,/*cTitle*/,"@E 999,999,999.99",/*uFormula*/,.F.,.T.,.F.,oSection1)
Return Nil
Static Function PrintReport(oReport)
Local cPulaLinha := CHR(13) + CHR(10)
Local cQuery := ""
Pergunte(cPerg,.F.)
If Select("QRY1") > 0
QRY1->(DbCloseArea())
EndIf
//cabeçalho do relatório
cQuery := "SELECT" + cPulaLinha
cQuery += "D2_FILIAL,D2_GRUPO,SUM(D2_QUANT) AS QUANTIDADE,SUM(D2_VALBRUT) AS VALOR from " + RetSqlName("SD2") + ""+ cPulaLinha
cQuery += "WHERE D2_EMISSAO >= '"+ DTOS(MV_PAR01) +"' AND D2_EMISSAO <= '"+ DTOS(MV_PAR02) +"'" + cPulaLinha
cQuery += "AND D2_FILIAL BETWEEN '"+ MV_PAR03 +"' AND '"+ MV_PAR04 +"'" + cPulaLinha
cQuery += "AND D2_GRUPO BETWEEN '"+ MV_PAR05 +"' AND '"+ MV_PAR06 +"'" + cPulaLinha
cQuery += "AND D2_TP BETWEEN '"+ MV_PAR07 +"' AND '"+ MV_PAR08 +"'" + cPulaLinha
cQuery += "AND D2_GRUPO LIKE '"+MV_PAR09+"%'" + cPulaLinha
cQuery += "AND D_E_L_E_T_='' AND D2_TIPO<>'D' GROUP BY D2_GRUPO,D2_FILIAL ORDER BY D2_GRUPO " + cPulaLinha
//Funcao ChangeQuery - Funcao para compatibilidade de banco
cQuery := ChangeQuery(cQuery)
//TcQuery VARIAVEL_QUERY New Alias "NOME DI ALIAS"
TcQuery cQuery New Alias "QRY1"
If QRY1->(EOF())
MSGInfo("Nao ha dados a serem exibidos!")
QRY1->(dbCloseArea())
Return (.F.)
EndIf
dbSelectArea("QRY1")
QRY1->(dbGoTop())
oReport:SetMeter(QRY1->(LastRec()))
//Irei percorrer todos os meus registros
While QRY1->(!Eof())
If oReport:Cancel()
Exit
EndIf
//inicializo a primeira seção
oSection1:Init()
oReport:IncMeter()
//imprimo a primeira seção
oSection1:Cell("D2_FILIAL"):SetValue(QRY1->D2_FILIAL)
oSection1:Cell("D2_GRUPO"):SetValue(QRY1->D2_GRUPO)
oSection1:Cell("QUANTIDADE"):SetValue(QRY1->QUANTIDADE)
oSection1:Cell("VALOR"):SetValue(QRY1->VALOR)
oSection1:Printline()
//imprimo uma linha para separar uma NOME de outra
oReport:ThinLine()
//finalizo a primeira seção
oSection1:Finish()
QRY1->(dbSkip())
Enddo
Return Nil
Gostaria de sabe como faço para não fica repetir o cabeçalho neste fonte?
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "TBICONN.CH"
#DEFINE CRLF CHR(13) + CHR(10)
User Function PEC000003()
Local aRegs := {}
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Declaracao de variaveis ? ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Private oReport := {}, oSection1 := {}
Private cPerg := PadR("PEC000003", Len(SX1->X1_GRUPO))
aAdd(aRegs,{cPerg,'01','Emissao de ?' ,'','','mv_ch1','D', 08,0,0,'G','','mv_par01','','','','','',''})
aAdd(aRegs,{cPerg,'02','Emissao Ate ?' ,'','','mv_ch2','D', 08,0,0,'G','','mv_par02','','','','','',''})
aAdd(aRegs,{cPerg,'03','Filial De ?' ,'','','mv_ch3','C', 04,0,0,'G','','mv_par03','','','','','',''})
aAdd(aRegs,{cPerg,'04','Filial Ate ?' ,'','','mv_ch4','C', 04,0,0,'G','','mv_par04','','','','','',''})
aAdd(aRegs,{cPerg,'05','Grupo De ?' ,'','','mv_ch5','C', 04,0,0,'G','','mv_par05','','','','','',''})
aAdd(aRegs,{cPerg,'06','Grupo Ate ?' ,'','','mv_ch6','C', 04,0,0,'G','','mv_par06','','','','','',''})
aAdd(aRegs,{cPerg,'07','Tipo De ?' ,'','','mv_ch7','C', 02,0,0,'G','','mv_par07','','','','','',''})
aAdd(aRegs,{cPerg,'08','Tipo Ate ?' ,'','','mv_ch8','C', 02,0,0,'G','','mv_par08','','','','','',''})
aAdd(aRegs,{cPerg,'09','Familia ?' ,'','','mv_ch9','C', 02,0,0,'G','','mv_par09','','','','','',''})
DbSelectArea('SX1')
SX1->(DbSetOrder(1))
For nX:=1 to Len(aRegs)
If RecLock('SX1',Iif(!SX1->(DbSeek(PadR(aRegs[nx][01],10)+aRegs[nx][02])),.T.,.F.))
Replace SX1->X1_GRUPO With aRegs[nx][01]
Replace SX1->X1_ORDEM With aRegs[nx][02]
Replace SX1->X1_PERGUNTE With aRegs[nx][03]
Replace SX1->X1_PERSPA With aRegs[nx][04]
Replace SX1->X1_PERENG With aRegs[nx][05]
Replace SX1->X1_VARIAVL With aRegs[nx][06]
Replace SX1->X1_TIPO With aRegs[nx][07]
Replace SX1->X1_TAMANHO With aRegs[nx][08]
Replace SX1->X1_DECIMAL With aRegs[nx][09]
Replace SX1->X1_PRESEL With aRegs[nx][10]
Replace SX1->X1_GSC With aRegs[nx][11]
Replace SX1->X1_VALID With aRegs[nx][12]
Replace SX1->X1_VAR01 With aRegs[nx][13]
Replace SX1->X1_DEF01 With aRegs[nx][14]
Replace SX1->X1_DEF02 With aRegs[nx][15]
Replace SX1->X1_DEF03 With aRegs[nx][16]
Replace SX1->X1_DEF04 With aRegs[nx][17]
Replace SX1->X1_DEF05 With aRegs[nx][18]
Replace SX1->X1_F3 With aRegs[nx][19]
MsUnlock('SX1')
Else
Help('',1,'REGNOIS')
Endif
Next nX
ReportDef()
oReport:PrintDialog()
Return
Static Function ReportDef()
oReport := TReport():New("PEC000003","Relatorio de Vendas por grupo",cPerg,{|oReport| PrintReport(oReport)}," Resumo por grupo")
oReport:SetLandscape(.T.)
if !Empty(oReport:uParam)
Pergunte(oReport:uParam,.F.)
endif
//Primeira Sessao dados da Campanha
oSection1 := TRSection():New( oReport , "Cabecalho", {"QRY1"} )
TRCell():New(oSection1,"D2_FILIAL" ,"QRY1" ,"Filial" , , 10)
TRCell():New(oSection1,"D2_GRUPO" ,"QRY1" ,"Grupo" , , 10)
TRCell():New(oSection1,"QUANTIDADE" ,"QRY1" ,"Quantidade" , , 10)
TRCell():New(oSection1,"VALOR" ,"QRY1" ,"Valor total" , "@E 999,999,999.99" , 10)
TRFunction():New(oSection1:Cell("QUANTIDADE"),/*cId*/,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F.,.T.,.F.,oSection1)
TRFunction():New(oSection1:Cell("VALOR"),/*cId*/,"SUM",/*oBreak*/,/*cTitle*/,"@E 999,999,999.99",/*uFormula*/,.F.,.T.,.F.,oSection1)
Return Nil
Static Function PrintReport(oReport)
Local cPulaLinha := CHR(13) + CHR(10)
Local cQuery := ""
Pergunte(cPerg,.F.)
If Select("QRY1") > 0
QRY1->(DbCloseArea())
EndIf
//cabeçalho do relatório
cQuery := "SELECT" + cPulaLinha
cQuery += "D2_FILIAL,D2_GRUPO,SUM(D2_QUANT) AS QUANTIDADE,SUM(D2_VALBRUT) AS VALOR from " + RetSqlName("SD2") + ""+ cPulaLinha
cQuery += "WHERE D2_EMISSAO >= '"+ DTOS(MV_PAR01) +"' AND D2_EMISSAO <= '"+ DTOS(MV_PAR02) +"'" + cPulaLinha
cQuery += "AND D2_FILIAL BETWEEN '"+ MV_PAR03 +"' AND '"+ MV_PAR04 +"'" + cPulaLinha
cQuery += "AND D2_GRUPO BETWEEN '"+ MV_PAR05 +"' AND '"+ MV_PAR06 +"'" + cPulaLinha
cQuery += "AND D2_TP BETWEEN '"+ MV_PAR07 +"' AND '"+ MV_PAR08 +"'" + cPulaLinha
cQuery += "AND D2_GRUPO LIKE '"+MV_PAR09+"%'" + cPulaLinha
cQuery += "AND D_E_L_E_T_='' AND D2_TIPO<>'D' GROUP BY D2_GRUPO,D2_FILIAL ORDER BY D2_GRUPO " + cPulaLinha
//Funcao ChangeQuery - Funcao para compatibilidade de banco
cQuery := ChangeQuery(cQuery)
//TcQuery VARIAVEL_QUERY New Alias "NOME DI ALIAS"
TcQuery cQuery New Alias "QRY1"
If QRY1->(EOF())
MSGInfo("Nao ha dados a serem exibidos!")
QRY1->(dbCloseArea())
Return (.F.)
EndIf
dbSelectArea("QRY1")
QRY1->(dbGoTop())
oReport:SetMeter(QRY1->(LastRec()))
//Irei percorrer todos os meus registros
While QRY1->(!Eof())
If oReport:Cancel()
Exit
EndIf
//inicializo a primeira seção
oSection1:Init()
oReport:IncMeter()
//imprimo a primeira seção
oSection1:Cell("D2_FILIAL"):SetValue(QRY1->D2_FILIAL)
oSection1:Cell("D2_GRUPO"):SetValue(QRY1->D2_GRUPO)
oSection1:Cell("QUANTIDADE"):SetValue(QRY1->QUANTIDADE)
oSection1:Cell("VALOR"):SetValue(QRY1->VALOR)
oSection1:Printline()
//imprimo uma linha para separar uma NOME de outra
oReport:ThinLine()
//finalizo a primeira seção
oSection1:Finish()
QRY1->(dbSkip())
Enddo
Return Nil
Por favor Acessar ou Registrar para participar da conversa.
- Tony.totvs
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 47
- Obrigados Recebidos: 0
8 anos 2 meses atrás #31050
por Tony.totvs
Respondido por Tony.totvs no tópico Não repetir cabeçalho no treports
Olá,
Tenta usar esse comando:
oReport:HideHeader()
Tenta usar esse comando:
oReport:HideHeader()
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Não repetir cabeçalho no treports
Tempo para a criação da página:0.057 segundos