×
Linguagem de Programação ADVPL
Perguntas Relatórios
- dzf6762
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
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.
- will3698
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
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 !
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.
- dzf6762
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
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
#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.
- dzf6762
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
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.
- will3698
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
- dzf6762
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
Tempo para a criação da página:0.089 segundos