- Fórum
- Protheus/Microsiga/Totvs
- Instalação e Configuração Protheus
- Dicas e Informações
- Criando seu primeiro relatório com TReport
Perguntas Criando seu primeiro relatório com TReport
- lalberto
- Autor do Tópico
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 2 meses atrás #5298
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Criando seu primeiro relatório com TReport foi criado por lalberto
Antes de criar o nosso primeiro relatório, vamos fazer uma prévia sobre o que é o TReport.
Ele é uma classe de impressão que substitui as funções SetPrint, SetDefault, RptStatus e Cabec.
A classe TReport permite que o usuário personalize as informações que serão apresentadas no relatório, alterando fonte (tipo, tamanho, etc.), cor, tipo de linhas, cabeçalho, rodapé, etc.
Estrutura do componente TReport: o relatório (TReport) contém uma ou mais seções (TRSection);
Uma seção (TRSection) pode conter uma ou mais seções; a seção (TRSection) contém células pré-definidas e células selecionadas pelo usuário; a seção (TRSection) também contém as quebras (TRBreak) para impressão de totalizadores (TRFunction);
Os totalizadores são incluídos pela seção que automaticamente inclui no relatório (TReport).
Agora vamos ao que interessa: criar seu primeiro relatório com TReport.
#include "rwmake.ch"
#include "protheus.ch"
#define DMPAPER_A4 9
User Function REST003()
local oReport
local cPerg := PadR('REST003',10)
oReport := reportDef()
oReport:printDialog()
Return
static function reportDef()
local oReport
Local oSection1
Local oSection2
local cTitulo := '[REST003] - Impressão de Produtos'
oReport := TReport():New('REST003', cTitulo, , {|oReport| PrintReport(oReport)},"Este relatorio ira imprimir a relacao de produtos.")
oReport:SetPortrait()
oReport:SetTotalInLine(.F.)
oReport:ShowHeader()
oSection1 := TRSection():New(oReport,"Filial",{"QRY"})
oSection1:SetTotalInLine(.F.)
TRCell():New(oSection1, "B1_FILIAL" , "QRY", 'FILIAL' ,PesqPict('SB1',"B1_FILIAL"),TamSX3("B1_FILIAL")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_CODMES" , "QRY", 'COD.MES' ,PesqPict('SB1',"B1_CODMES"),TamSX3("B1_CODMES")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_SUFIXO" , "QRY", 'SUFIXO' ,PesqPict('SB1',"B1_SUFIXO"),TamSX3("B1_SUFIXO")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_COD" , "QRY", 'COD.INT' ,PesqPict('SB1',"B1_COD") ,TamSX3("B1_COD")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_REFFAB" , "QRY", 'REF.FAB' ,PesqPict('SB1',"B1_REFFAB"),TamSX3("B1_REFFAB")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_DESC" , "QRY", 'DESCRIÇÃO',PesqPict('SB1',"B1_DESC") ,TamSX3("B1_DESC")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "Z5_ABREV" , "QRY", 'ABREVI' ,PesqPict('SZ5',"Z5_ABREV") ,TamSX3("Z5_ABREV")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_TIPO" , "QRY", 'TIPO' ,PesqPict('SB1',"B1_TIPO") ,TamSX3("B1_TIPO")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "BM_DESC" , "QRY", 'GRUPO' ,PesqPict('SBM',"BM_DESC") ,TamSX3("BM_DESC")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "VE1_DESMAR", "QRY", 'MARCA' ,PesqPict('VE1',"VE1_DESMAR"),TamSX3("VE1_DESMAR")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
oBreak := TRBreak():New(oSection1,oSection1:Cell("B1_FILIAL"),,.F.)
TRFunction():New(oSection1:Cell("B1_FILIAL"),"TOTAL FILIAL","COUNT",oBreak,,"@E 999999",,.F.,.F.)
TRFunction():New(oSection1:Cell("B1_FILIAL"),"TOTAL GERAL" ,"COUNT",,,"@E 999999",,.F.,.T.)
return (oReport)
Static Function PrintReport(oReport)
Local oSection1 := oReport:Section(1)
oSection1:Init()
oSection1:SetHeaderSection(.T.)
DbSelectArea('QRY')
dbGoTop()
oReport:SetMeter(QRY->(RecCount()))
While QRY->(!Eof())
If oReport:Cancel()
Exit
EndIf
oReport:IncMeter()
oSection1:Cell("B1_FILIAL"):SetValue(QRY->B1_FILIAL)
oSection1:Cell("B1_FILIAL"):SetAlign("CENTER")
oSection1:Cell("B1_CODMES"):SetValue(QRY->B1_CODMES)
oSection1:Cell("B1_CODMES"):SetAlign("CENTER")
oSection1:Cell("B1_SUFIXO"):SetValue(QRY->B1_SUFIXO)
oSection1:Cell("B1_SUFIXO"):SetAlign("CENTER")
oSection1:Cell("B1_COD"):SetValue(QRY->B1_COD)
oSection1:Cell("B1_COD"):SetAlign("CENTER")
oSection1:Cell("B1_REFFAB"):SetValue(QRY->B1_REFFAB)
oSection1:Cell("B1_REFFAB"):SetAlign("LEFT")
oSection1:Cell("B1_DESC"):SetValue(QRY->B1_DESC)
oSection1:Cell("B1_DESC"):SetAlign("LEFT")
oSection1:Cell("Z5_ABREV"):SetValue(Posicione("SZ5",1,xFilial("SZ5")+QRY->B1_GRUFAM,"Z5_ABREV"))
oSection1:Cell("Z5_ABREV"):SetAlign("LEFT")
oSection1:Cell("B1_TIPO"):SetValue(QRY->B1_TIPO)
oSection1:Cell("B1_TIPO"):SetAlign("LEFT")
oSection1:Cell("BM_DESC"):SetValue(Posicione("SBM",1,xFilial("SBM")+QRY->B1_GRUPO,"BM_DESC"))
oSection1:Cell("BM_DESC"):SetAlign("LEFT")
oSection1:Cell("VE1_DESMAR"):SetValue(Posicione("VE1",2,xFilial("VE1")+QRY->B1_ABREVI,"VE1_DESMAR"))
oSection1:Cell("VE1_DESMAR"):SetAlign("LEFT")
oSection1:PrintLine()
dbSelectArea("QRY")
QRY->(dbSkip())
EndDo
oSection1:Finish()
Return
Ele é uma classe de impressão que substitui as funções SetPrint, SetDefault, RptStatus e Cabec.
A classe TReport permite que o usuário personalize as informações que serão apresentadas no relatório, alterando fonte (tipo, tamanho, etc.), cor, tipo de linhas, cabeçalho, rodapé, etc.
Estrutura do componente TReport: o relatório (TReport) contém uma ou mais seções (TRSection);
Uma seção (TRSection) pode conter uma ou mais seções; a seção (TRSection) contém células pré-definidas e células selecionadas pelo usuário; a seção (TRSection) também contém as quebras (TRBreak) para impressão de totalizadores (TRFunction);
Os totalizadores são incluídos pela seção que automaticamente inclui no relatório (TReport).
Agora vamos ao que interessa: criar seu primeiro relatório com TReport.
#include "rwmake.ch"
#include "protheus.ch"
#define DMPAPER_A4 9
User Function REST003()
local oReport
local cPerg := PadR('REST003',10)
oReport := reportDef()
oReport:printDialog()
Return
static function reportDef()
local oReport
Local oSection1
Local oSection2
local cTitulo := '[REST003] - Impressão de Produtos'
oReport := TReport():New('REST003', cTitulo, , {|oReport| PrintReport(oReport)},"Este relatorio ira imprimir a relacao de produtos.")
oReport:SetPortrait()
oReport:SetTotalInLine(.F.)
oReport:ShowHeader()
oSection1 := TRSection():New(oReport,"Filial",{"QRY"})
oSection1:SetTotalInLine(.F.)
TRCell():New(oSection1, "B1_FILIAL" , "QRY", 'FILIAL' ,PesqPict('SB1',"B1_FILIAL"),TamSX3("B1_FILIAL")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_CODMES" , "QRY", 'COD.MES' ,PesqPict('SB1',"B1_CODMES"),TamSX3("B1_CODMES")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_SUFIXO" , "QRY", 'SUFIXO' ,PesqPict('SB1',"B1_SUFIXO"),TamSX3("B1_SUFIXO")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_COD" , "QRY", 'COD.INT' ,PesqPict('SB1',"B1_COD") ,TamSX3("B1_COD")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_REFFAB" , "QRY", 'REF.FAB' ,PesqPict('SB1',"B1_REFFAB"),TamSX3("B1_REFFAB")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_DESC" , "QRY", 'DESCRIÇÃO',PesqPict('SB1',"B1_DESC") ,TamSX3("B1_DESC")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "Z5_ABREV" , "QRY", 'ABREVI' ,PesqPict('SZ5',"Z5_ABREV") ,TamSX3("Z5_ABREV")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "B1_TIPO" , "QRY", 'TIPO' ,PesqPict('SB1',"B1_TIPO") ,TamSX3("B1_TIPO")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "BM_DESC" , "QRY", 'GRUPO' ,PesqPict('SBM',"BM_DESC") ,TamSX3("BM_DESC")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
TRCell():new(oSection1, "VE1_DESMAR", "QRY", 'MARCA' ,PesqPict('VE1',"VE1_DESMAR"),TamSX3("VE1_DESMAR")[1]+1,/*lPixel*/,/*{|| code-block de impressao }*/)
oBreak := TRBreak():New(oSection1,oSection1:Cell("B1_FILIAL"),,.F.)
TRFunction():New(oSection1:Cell("B1_FILIAL"),"TOTAL FILIAL","COUNT",oBreak,,"@E 999999",,.F.,.F.)
TRFunction():New(oSection1:Cell("B1_FILIAL"),"TOTAL GERAL" ,"COUNT",,,"@E 999999",,.F.,.T.)
return (oReport)
Static Function PrintReport(oReport)
Local oSection1 := oReport:Section(1)
oSection1:Init()
oSection1:SetHeaderSection(.T.)
DbSelectArea('QRY')
dbGoTop()
oReport:SetMeter(QRY->(RecCount()))
While QRY->(!Eof())
If oReport:Cancel()
Exit
EndIf
oReport:IncMeter()
oSection1:Cell("B1_FILIAL"):SetValue(QRY->B1_FILIAL)
oSection1:Cell("B1_FILIAL"):SetAlign("CENTER")
oSection1:Cell("B1_CODMES"):SetValue(QRY->B1_CODMES)
oSection1:Cell("B1_CODMES"):SetAlign("CENTER")
oSection1:Cell("B1_SUFIXO"):SetValue(QRY->B1_SUFIXO)
oSection1:Cell("B1_SUFIXO"):SetAlign("CENTER")
oSection1:Cell("B1_COD"):SetValue(QRY->B1_COD)
oSection1:Cell("B1_COD"):SetAlign("CENTER")
oSection1:Cell("B1_REFFAB"):SetValue(QRY->B1_REFFAB)
oSection1:Cell("B1_REFFAB"):SetAlign("LEFT")
oSection1:Cell("B1_DESC"):SetValue(QRY->B1_DESC)
oSection1:Cell("B1_DESC"):SetAlign("LEFT")
oSection1:Cell("Z5_ABREV"):SetValue(Posicione("SZ5",1,xFilial("SZ5")+QRY->B1_GRUFAM,"Z5_ABREV"))
oSection1:Cell("Z5_ABREV"):SetAlign("LEFT")
oSection1:Cell("B1_TIPO"):SetValue(QRY->B1_TIPO)
oSection1:Cell("B1_TIPO"):SetAlign("LEFT")
oSection1:Cell("BM_DESC"):SetValue(Posicione("SBM",1,xFilial("SBM")+QRY->B1_GRUPO,"BM_DESC"))
oSection1:Cell("BM_DESC"):SetAlign("LEFT")
oSection1:Cell("VE1_DESMAR"):SetValue(Posicione("VE1",2,xFilial("VE1")+QRY->B1_ABREVI,"VE1_DESMAR"))
oSection1:Cell("VE1_DESMAR"):SetAlign("LEFT")
oSection1:PrintLine()
dbSelectArea("QRY")
QRY->(dbSkip())
EndDo
oSection1:Finish()
Return
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Denilson
- Desconectado
- Usuário está bloqueado
Menos
Mais
- Postagens: 32
- Obrigados Recebidos: 0
12 anos 2 meses atrás #5329
por Denilson
Respondido por Denilson no tópico Re: Criando seu primeiro relatório com TReport
Luiz bom dia;
Vc irá fazer nesta parte um tipo de cursinho para o Treport? se sim gostaria de estar participando
muito grato
Denilson
Vc irá fazer nesta parte um tipo de cursinho para o Treport? se sim gostaria de estar participando
muito grato
Denilson
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Autor do Tópico
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 2 meses atrás #5330
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Re: Criando seu primeiro relatório com TReport
Denilson na verdade as vezes pego algumas dicas pela net, ou amigos que mandam e acabo postando para ajudar a galera, mas se tiver interesse fique à vontade para postar o que quiser, é claro que preciso de ajuda sim rsrs
Obrigado
Obrigado
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- Instalação e Configuração Protheus
- Dicas e Informações
- Criando seu primeiro relatório com TReport
Tempo para a criação da página:0.139 segundos