× Linguagem de Programação ADVPL

Perguntas Relatórios

Mais
10 anos 10 meses atrás - 10 anos 10 meses atrás #20228 por dzf6762
Relatórios foi criado por dzf6762
Boa Tarde o meu nome é Denis sou novo em advpl e estou criando um relatório de títulos em protesto porem preciso separar por UF mas não sei como fazer para que ele divida por isso, alguém pode me ajudar?Inserir o código fonte em anexo.
Ultima edição: 10 anos 10 meses atrás por dzf6762.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 10 meses atrás #20229 por will3698
Respondido por will3698 no tópico Relatórios
Ola Denis, bem vindo

Veja, se o relatório for simples, envolvendo uma tabela só, você pode usar o SIGARPM, ou se tiver mais noção o TotvsReport
que vai ser bem mais tranquilo, fica difícil de te enviar um fonte, pois as bases são diferentes, pra te passar teria que ver
um exemplo do registro e tal, senão o relatorio fika muito genérico, e acaba te trazendo informação errada.

Caso Você não manje do SIGARPM, tem vários manuais dele na net, caso queira, manda ai um dbf com o registro de exemplo
e eu posso te passar um exemplo do relatório !

a idéia é facilitar a vida ! :)

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 10 meses atrás #20232 por dzf6762
Respondido por dzf6762 no tópico Relatórios
o meu codigo é assim

#INCLUDE "PROTHEUS.Ch"
#INCLUDE "RWMAKE.CH"

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºModulo ³FinanceiroºAutor | Denis Zanichelli Ferreira ºData ³ / / º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³Funcao para gerar relatorio de titulos em protesto baixados ou nao baixados º±±
±±º ³e por UF. º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºFuncao ³RelProtest ºObs. | º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/

User Function RelProtest()

Local cDesc1 := "Este programa tem como objetivo imprimir relatorio "
Local cDesc2 := "de acordo com os parametros informados pelo usuario."
Local cDesc3 := "Titulos em Protesto"
Local cPict := ""
Local titulo := "Titulos em Protesto"
Local nLin := 80
local cTest := " "

Local Cabec1 := "NO.Tit. Parcela Tipo UF Fornecedor Nome Fornecedor LOJA Vlr.Tit. JUROS TOTAL BCO.PAG DT.EMI. DT.BAIXA DT.VENC DT.VENC REAl "
Local Cabec2 := ""
Local imprime := .T.
Local aOrd := {}
Private lEnd := .F.
Private lAbortPrint := .F.
Private CbTxt := ""
Private limite := 220
Private tamanho := "G"
Private nomeprog := "RelProtest" // Coloque aqui o nome do programa para impressao no cabecalho
Private nTipo := 18
Private aReturn := { "Zebrado", 1, "Administracao", 2, 2, 1, "", 1}
Private nLastKey := 0
Private cPerg := "TITPRO"
Private cbtxt := Space(10)
Private cbcont := 00
Private CONTFL := 01
Private m_pag := 01
Private wnrel := "TITPRO" // Coloque aqui o nome do arquivo usado para impressao em disco

Private cString := "SE2"

dbSelectArea("SE2")
dbSetOrder(1)


pergunte(cPerg,.F.)

wnrel := SetPrint(cString,NomeProg,cPerg,@titulo,cDesc1,cDesc2,cDesc3,.T.,aOrd,.T.,Tamanho,,.T.)
nTipo := If(aReturn[4]==1,15,18)
If nLastKey == 27
Return
Endif

SetDefault(aReturn,cString)

If nLastKey == 27
Return
Endif
RptStatus({|| RunReport(Cabec1,Cabec2,Titulo,nLin) },Titulo)
Return
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFun‡„o ³RUNREPORT º Autor ³ AP6 IDE º Data ³ 16/09/08 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescri‡„o ³ Funcao auxiliar chamada pela RPTSTATUS. A funcao RPTSTATUS º±±
±±º ³ monta a janela com a regua de processamento. º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Programa principal º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function RunReport(Cabec1,Cabec2,Titulo,nLin)
Local nTotal1 := 0
Local nTotal2 := 0
Local nTotal3 := 0

if mv_par05 = 2
cProt := "AND E2_X_UF = ' ' "
else
cProt:= " AND E2_X_UF != ' ' "
endif
cQuery:=" select E2_NUM,E2_PARCELA,E2_TIPO,E2_X_UF,E2_FORNECE,E2_NOMFOR,E2_LOJA, "
cQuery+="E2_VALOR ,E2_VALJUR,cast(sum(E2_VALOR+E2_VALJUR)as money) as TOTAL, "
cQuery+="E2_BCOPAG,E2_EMISSAO,E2_BAIXA,E2_VENCTO,E2_VENCREA "
cQuery+=" from SE2010 "
cQuery+=" where (E2_BAIXA BETWEEN '"+dTos(mv_par01)+"'AND'"+dTos(mv_par02)+"'OR E2_FORNECE BETWEEN '"+Alltrim(mv_par03)+"' AND '"+Alltrim(mv_par04)+"')"+cProt+"AND D_E_L_E_T_ = ' '
cQuery+="GROUP BY E2_NUM,E2_PARCELA,E2_TIPO,E2_X_UF,E2_FORNECE,E2_NOMFOR,E2_LOJA,E2_VALOR,E2_VALJUR,E2_BCOPAG,E2_EMISSAO,E2_BAIXA,E2_VENCTO,E2_VENCREA ORDER BY E2_NUM,E2_X_UF "

MemoWrit("c:\Tmp\TIT_PROTEST.sql",cQuery)
dbUseArea(.T.,"TOPCONN", TCGenQry(,,cQuery),"TRB", .F., .T.)

COUNT TO nRecCount

//CASO TENHA DADOS

SetRegua(nRecCount)

dbSelectArea("TRB")
dbGoTop()

While TRB->E2_X_UF==cTest .and. TRB->(!EOF())

IncRegua()
/*While !TRB001->(Eof())
cQuery:=" select E2_NUM,E2_PARCELA,E2_TIPO,E2_X_UF,E2_FORNECE,E2_NOMFOR,E2_LOJA, "
cQuery+="E2_VALOR ,E2_VALJUR,cast(sum(E2_VALOR+E2_VALJUR)as money) as TOTAL, "
cQuery+="E2_BCOPAG,E2_EMISSAO,E2_BAIXA,E2_VENCTO,E2_VENCREA "
cQuery+=" from SE2010 "
cQuery+=" where (E2_BAIXA BETWEEN '"+dTos(mv_par01)+"'AND'"+dTos(mv_par02)+"'OR E2_FORNECE BETWEEN '"+Alltrim(mv_par03)+"' AND '"+Alltrim(mv_par04)+"')"+cProt+"AND D_E_L_E_T_ = ' '
cQuery+="GROUP BY E2_NUM,E2_PARCELA,E2_TIPO,E2_X_UF,E2_FORNECE,E2_NOMFOR,E2_LOJA,E2_VALOR,E2_VALJUR,E2_BCOPAG,E2_EMISSAO,E2_BAIXA,E2_VENCTO,E2_VENCREA ORDER BY E2_NUM,E2_X_UF "

MemoWrit("c:\Tmp\TIT_PROTEST.sql",cQuery)
dbUseArea(.T.,"TOPCONN", TCGenQry(,,cQuery),"TRB001", .F., .T.)

COUNT TO nRecCount

//CASO TENHA DADOS

SetRegua(nRecCount)

//dbSelectArea("TRB001") */
//dbGoTop()
//aadd(aDados, {TRB001->E2_NUM,TRB001->E2_PARCELA,TRB001->E2_TIPO,TRB001->E2_X_UF,TRB001->E2_FORNECE,TRB001->E2_NOMFOR,TRB001->E2_LOJA,TRB001->E2_VALOR,TRB001->E2_VALJUR,TRB001->TOTAL,TRB001->E2_BCOPAG,TRB001->E2_EMISSAO,TRB001->E2_BAIXA,TRB001->E2_VENCTO,TRB001->E2_VENCREA})

//nTotal1 := nTotal1 + TRB001->E2_VALOR
//nTotal2 := nTotal2 + TRB001->E2_VALJUR
//nTotal3 := nTotal3 + TRB001->TOTAL

//TRB001->(DbCloseArea())
//TRB001->(DbSkip())

//END

//aadd(aDados, { "", "", "", "", "", "", "", "", "", "","","","","" } )
//aadd(aDados, { "TOTAL ", "Valor do Titulo", nTotal1, "Valor do Juros do titulo",nTotal2,"Valor total dos titulos ", nTotal3,"","","","","","",""} )
//aadd(aDados, { "", "", "", "", "", "", "", "", "", "","","","","" } )
//aadd(aDados, { "", "", "", "", "", "", "", "", "", "","","","","" } )

//If !Empty(aDados)

//If MV_PAR03 = 1
// For nx := 1 to Len(aDados)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Verifica o cancelamento pelo usuario... ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

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

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Impressao do cabecalho do relatorio. . . ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

If nLin > 55 // Salto de Página. Neste caso o formulario tem 55 linhas...
Cabec(Titulo,Cabec1,Cabec2,NomeProg,Tamanho,nTipo)
nLin := 8
Endif

dbSelectArea("TRB")
// @ nLin, 0 PSAY STOD(TRB->D1_XDTREAL)// 0,10,18,28,70,82,95,106,113
@ nLin, 0 PSAY TRB->E2_NUM
@ nLin, 14 PSAY TRB->E2_PARCELA
@ nLin, 28 PSAY TRB->E2_TIPO
@ nLin, 45 PSay TRB->E2_X_UF
@ nLin, 58 PSay TRB->E2_FORNECE
@ nLin, 75 PSay TRB->E2_NOMFOR
@ nLin, 94 PSay TRB->E2_LOJA
//@ nLin, 26 PSAY Substr(TRB->A2_NOME,1,25)
@ nLin, 100 PSAY TRB->E2_VALOR PICTURE '@E 999,999,999.99'
@ nLin, 110 PSAY TRB->E2_VALJUR PICTURE '@E 999,999,999.99'
@ nLin, 120 PSAY TRB->TOTAL PICTURE '@E 999,999,999.99'
@ nLin, 135 PSay TRB->E2_BCOPAG
@ nLin, 150 PSAY STOD(TRB->E2_EMISSAO)
@ nLin, 167 PSAY STOD(TRB->E2_BAIXA)
@ nLin, 187 PSAY STOD(TRB->E2_VENCTO)
@ nLin, 210 PSAY IIF(Empty(trb->E2_VENCREA),' / / ',STOD(TRB->E2_VENCREA))
cTest:=TRB->E2_X_UF



// Avanca a linha de impressao
nLin := nLin + 1


dbSkip() // Avanca o ponteiro do registro no arquivo
EndDo
@ nLin,00 PSay __PrtThinLine()
@nLin ++
@nLin, 00 Psay 'Total de'
@nLin, 10 Psay cTest
DbCloseArea("TRB")

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Finaliza a execucao do relatorio... ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

SET DEVICE TO SCREEN

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Se impressao em disco, chama o gerenciador de impressao... ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

If aReturn[5]==1
dbCommitAll()
SET PRINTER TO
OurSpool(wnrel)
Endif

MS_FLUSH()
Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 10 meses atrás #20233 por dzf6762
Respondido por dzf6762 no tópico Relatórios
é só usa uma tabela de contas apagar onde tive que criar um campo UF para que ele traga títulos em protesto, pois a rotina do usuário é quando ele preencher este campo quer dizer que esta em protesto entende eu tentei no rpm porem em questão do filtro eu não consegui.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 10 meses atrás #20237 por will3698
Respondido por will3698 no tópico Relatórios
tem como me mandar um dbf com um exemplo de um registro nessa situação ?

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 10 meses atrás #20239 por dzf6762
Respondido por dzf6762 no tópico Relatórios
segue o arquivo dbf

Por favor Acessar ou Registrar para participar da conversa.

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