Dicas de Relatorios Protheus Full

7
Dicas de relatorios Protheus: #INCLUDE "TOPCONN.CH" /*/ User Function GrafExample() //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ¿ //³ Define parametros para o SetPrint ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÙ cString := "SRA" cTitulo := "Titulo do relatório " cCabec1 := "1a. Linha do cabeçalho" cCabec2 := "2a. linha do cabeçalho" oPrn:=TMSPrinter():New() oPrn:SetPortrait() // SetLandscape() oprn:setup() RptStatus({|| CImp()},cTitulo) Return( nil ) **************************************************************** *************************************** Static Function CImp() Private nLin := 3021 PRIVATE nIC := 030 PRIVATE oFont1 := TFont():New("Courier New" ,07,07,,.F.,,,, ,.F.) //CORPO DO TEXTO dDtRef := MV_PAR01 setregua(reccount()) DbGoTop()

description

Dicas de Relatorios Protheus Full

Transcript of Dicas de Relatorios Protheus Full

Dicas de relatorios Protheus:

#INCLUDE "TOPCONN.CH"/*/User Function GrafExample()

//// Define parametros para o SetPrint//cString:= "SRA"cTitulo:= "Titulo do relatrio"cCabec1:= "1a. Linha do cabealho"cCabec2:= "2a. linha do cabealho"

oPrn:=TMSPrinter():New()oPrn:SetPortrait() // SetLandscape() oprn:setup()

RptStatus({|| CImp()},cTitulo)

Return( nil )

*******************************************************************************************************Static Function CImp()

Private nLin:= 3021PRIVATE nIC := 030PRIVATE oFont1 := TFont():New("Courier New" ,07,07,,.F.,,,,,.F.) //CORPO DO TEXTOdDtRef:= MV_PAR01

setregua(reccount())DbGoTop()

WHILE !eof()

IncRegua()

oprn:startpage()

nLin:= 050

Cabec1()

oprn:Say(nLin,0050,"seus dados aqui",oFont1,100)oprn:Say(nLin,0270,"mesma linha outra coluna",oFont1,100)

nLin+=nIC

oprn:Say(nLin,0050,"Linhas e colunas...",oFont1,100)oprn:Say(nLin,0270,"...So controladas em pixel",oFont1,100)

nLin+=nIC

oprn:PREVIEW()oprn:end()

RETURN()*******************************************************************************************************

STATIC FUNCTION Cabec1()

IF lPrimeiraPaginalPrimeiraPagina := .F.ELSEoprn:endpage()ENDIFnLin:= 050IF !empty(cCabec1)oprn:Say(nLin,0050,cCabec1,oFont1,100)nLin += nICENDIFIF !empty(cCabec2)oprn:Say(nLin,0050,cCabec2,oFont1,100)nLin += nICENDIF//@ nLin,000 PSAY replicate("-",132)nLin += nIC

RETURN(nil)

*********************************************************************************************************

Outros comandos:

oPrint:SaveAllAsJPEG(cStartPath+cJPEG,865,1170,140) // Salva todas as paginas do relatrio como JPEG. oPrint:Box(250,50,1100,100) // Monta um boxoPrint:Line(0300,50,0300,100)// Monta uma linha horizontaloPrint:SayBitmap(05,0005, "Logo.bmp",328,82)// Tem que estar abaixo do RootPath, imprime um bitmap

#INCLUDE "rwmake.ch" #INCLUDE "PROTHEUS.CH"

User Function ETQCT

cPerg:= "ETQCT"

Pergunte(cPerg,.T.)

cDEscFun:= ""cLocTrab:= ""nMarc:= 0nTamPag:= 2794 //GetAdvFval("SX5","X5_DESCRI",xFilial("SX5")+"Z2"+MV_PAR05,1)*10nLin:= MV_PAR06*100nMargEsq:= MV_PAR07*100nMargDir:= MV_PAR08*100nMargInf:= MV_PAR09*100cCumpEtq:= MV_PAR10*100nLimite := nTamPag - nMargInf

oPrn:=TMSPrinter():New("Impresso de etiqueta de cartao de ponto")oFont := Tfont():New("Arial",,08,,.F.,,,,,.F.) lAbortPrint := .F.

cQuery:= "SELECT RA_MAT, RA_NOME, RA_CODFUNC, RA_LOCTRAB FROM " +RetSqlName("SRA")+ " WHERE D_E_L_E_T_'*' AND "cQuery+= "RA_FILIAL BETWEEN '"+MV_PAR01+"' AND '"+MV_PAR02+"' AND "cQuery+= "RA_MAT BETWEEN '"+MV_PAR03+"' AND '"+MV_PAR04+"' AND "cQuery+= "RA_SITFOLH = '"+CriaVar("RA_SITFOLH",.F.)+"' ORDER BY RA_MAT"

if select("TP")0Dbselectarea("TP")dbCloseArea()endifdbuseArea( .T., "TOPCONN", TCGenQry( Nil, Nil, cQuery ), "TP", .T., .F. )While !eof()

If lAbortPrint@nLin,00 PSAY "*** CANCELADO PELO OPERADOR ***"ExitEndif

If nLin >= nLimite // oPrn:EndPage()nLin:= MV_PAR06*100Endif

nMarc = nLin

oPrn:Say(nLin,nMargEsq,TP->RA_MAT + " - " + TP->RA_NOME,oFont)nLin:= nLin+45cDescFun:= Posicione("SRJ",1,xFilial("SRJ")+TP->RA_CODFUNC,"RJ_DESC")cLocTrab:= GetAdvFval("SX5","X5_DESCRI",xFilial("SX5")+"Z0"+TP->RA_LOCTRAB,1)oPrn:Say(nLin,nMargEsq,cDEscFun + " - " + cLocTrab,oFont) nLin:= nLin+45oPrn:Say(nLin,nMargEsq,DtoS(ddatabase),oFont)nLin:= nLin+45oPrn:Say(nLin,nMargEsq,"ENTRADA | INTERVALO PARA REFEIO | SADA",oFont)nLin:= nLin+45oPrn:Say(nLin,nMargEsq,SM0->M0_NOMECOM,oFont)nLin:= nLin+45oPrn:Say(nLin,nMargEsq,Transform(SM0->M0_CGC, "@R 99.999.999/9999-99") + "1 QUINZENA",oFont)dbskip()nLin = nMarcoPrn:Say(nLin,nMargDir,TP->RA_MAT + " - " + TP->RA_NOME,oFont)nLin:= nLin+45cDescFun:= Posicione("SRJ",1,xFilial("SRJ")+TP->RA_CODFUNC,"RJ_DESC")cLocTrab:= GetAdvFval("SX5","X5_DESCRI",xFilial("SX5")+"Z0"+TP->RA_LOCTRAB,1)oPrn:Say(nLin,nMargDir,cDEscFun + " - " + cLocTrab,oFont) nLin:= nLin+45oPrn:Say(nLin,nMargDir,DtoS(ddatabase),oFont)nLin:= nLin+45oPrn:Say(nLin,nMargDir,"ENTRADA | INTERVALO PARA REFEIO | SADA",oFont)nLin:= nLin+45oPrn:Say(nLin,nMargDir,SM0->M0_NOMECOM,oFont)nLin:= nLin+45oPrn:Say(nLin,nMargDir,Transform(SM0->M0_CGC, "@R 99.999.999/9999-99") + "1 QUINZENA",oFont)dbSkip()nLin:= nLin+240 enddo oPrn:Preview()

Return

return

obrigado!

Marco Antonio

Menssagem do ACGC em 22/10/2010 as 09:32 hs Local: PA Registrada: 17/9/2005 Postagem: 20

Eu montei uma funo para trabalhar com composicionamento em mm, assim eu no precisei ficar batendo cabea com pixels,

exemplooPrn:Say(GPixel(5),GPixel(5),TP->RA_MAT + " - " + TP->RA_NOME,oFont)Estou mandando imprimir a 5mm da margem superior e 5mm da margem esquerda

*********************************************************Static Function GPixel(_nMm)*********************************************************_nRet:=(_nMm/25.4)*300Return(_nRet)

Menssagem do ACGC em 22/10/2010 as 09:34 hs Local: PA Registrada: 17/9/2005 Postagem: 20

Mas um detalhe eu uso at mesmo pra saltar linhas

nLin+=GPixel(10) //Vai saltar 10mm na ultima linha