Dicas de Relatorios Protheus Full
-
Upload
fabio-apolinario -
Category
Documents
-
view
314 -
download
1
description
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