Perguntas Criando seu primeiro relatório com TReport

Mais
12 anos 2 meses atrás #5298 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

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.

Mais
12 anos 2 meses atrás #5329 por Denilson
Luiz bom dia;

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.

Mais
12 anos 2 meses atrás #5330 por lalberto
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

:woohoo:

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.

Tempo para a criação da página:0.139 segundos
Joomla templates by a4joomla