× Linguagem de Programação ADVPL

Perguntas relatorio nao salva

Mais
10 anos 10 meses atrás #19991 por vitor kwon
bom dia pessoal...Estou com uma duvida, desenvolvi este relatorio e ele esta trazendo os dados normalmente....mas ao fechar a tela de impressao e abrir de novo ele sempre volta em branco.....vou no menu, aciono a rotina e fecho....normal...se eu tento acionar a rotina novamente ela vem em branco...:(....se eu fechar o protheus e acessar a rotina ela vem certo...mas vem certo so se eu fechar o modulo e abrir.....nao sei onde esta se perdendo.......alguém tem

#INCLUDE "protheus.ch"
#INCLUDE "topconn.ch"
user function relatorio()
Local cDesc1 := "Este programa tem como objetivo imprimir relatorio "
Local cDesc2 := "de acordo com os parametros informados pelo usuario."
Local cDesc3 := "Relatorio de Contratos"
Local cPict := ""
Local cTitulo := "Relatorio de Contratos"
Local aOrd := {"Contratos",""}
Local cTamanho := "M"
Local cNomeprog := "Relatorio Contratos "
Local nTipo := 18
Local cPerg := "RREL001"
Local cAlias := "ADA"

Private aReturn := { "Zebrado", 1, "Administracao", 2, 2, 1, "", 1}
PRIVATE lEnd := .f.
Private lAbortPrint := .F.
Private nLastKey := 0
Private m_pag := 01
Private wnrel := "EL01"
dbSelectArea(cAlias)
dbSetOrder(1)

CriaSx1(cPerg)
Pergunte(cPerg,.T.)

wnrel := SetPrint(cAlias,cNomeProg,cPerg,@cTitulo,cDesc1,cDesc2,cDesc3,.F.,aOrd,.F.,cTamanho,,.T.)

If nLastKey == 27
Return
Endif

SetDefault(aReturn,cAlias)

If nLastKey == 27
Return
Endif

RptStatus({|| RunReport(cTitulo,cTamanho,cNomeprog,nTipo,cAlias) },cTitulo)
Return

Static Function RunReport(cTitulo,cTamanho,cNomeprog,nTipo,cAlias)

Local nOrdem := 0
Local nLin := 80
Local cCabec1 := ""
Local cCabec2 := ""
cCabec1 :="Relatorio Contratos"
cCabec2 :=""

SetRegua(RecCount())

dbSeek(xFilial(cAlias)+ADB->ADB_NUMCTR,.T.)
While (cAlias)->(!EOF())

If MV_PAR01 > ADA->ADA_EMISSA
(cAlias)->( dbSkip())
Loop
EndIf

If MV_PAR02 < ADA->ADA_EMISSA
(cAlias)->( dbSkip() )
Loop
EndIf

If MV_PAR03 > ADA->ADA_NUMCTR
(cAlias)->( dbSkip())
Loop
EndIf

If MV_PAR04 < ADA->ADA_NUMCTR
(cAlias)->( dbSkip() )
Loop
EndIf


cSql:= " SELECT * FROM "+RETSQLNAME("ADB")+ " ADB "
cSql+= " WHERE "
cSql+= " ADB_NUMCTR = ‘"+ADA->ADA_NUMCTR+"‘ "
If !empty(mv_par04)
cSql+= " AND ADB_NUMCTR BETWEEN ‘"+mv_par03+"‘ AND ‘"+mv_par04+"‘ "
Endif
cSql+= " AND ADB.D_E_L_E_T_ <> ‘*‘ "
cSql+= " ORDER BY ADB_NUMCTR "

If Select("ADBSQL") > 0
ADBSQL->(DbCloseArea())
End
TcQuery cSql New Alias "ADBSQL"


DBSELECTAREA("ADB")
DBSETORDER(1)
dbSeek(xFilial(cAlias)+(cAlias)->ADA_NUMCTR,.T.)
If ADBSQL->ADB_NUMCTR == ADA->ADA_NUMCTR
If nLin > 55
Cabec(cTitulo,cCabec1,cCabec2,cNomeProg,cTamanho,nTipo)
nLin := 8
Endif

nLin++
@nLin,00 psay ("CLIENTE : ")+(ADA->ADA_CODCLI)
nLin++
@nLin,00 psay ("Contrato Numero: ")+CVALTOCHAR(ADB->ADB_NUMCTR)
nLin++
@nLin,00 psay ("Nota Fiscal : ")+CVALTOCHAR(ADB->ADB_NUMCTR)
nLin++

While ADBSQL->(!eof())
If nLin > 55
Cabec(cTitulo,cCabec1,cCabec2,cNomeProg,cTamanho,nTipo)
nLin := 8
Endif
@nLin,00 Psay ("ITEM :")+CVALTOCHAR(ADBSQL->ADB_ITEM)
@nLin,30 Psay CVALTOCHAR(ADBSQL->ADB_NUMCTR)
@nLin,50 Psay CVALTOCHAR(ADBSQL->ADB_DESPRO)
@nLin,90 Psay CVALTOCHAR(ADBSQL->ADB_QUANT)
@nLin,110 Psay CVALTOCHAR(ADBSQL->ADB_PRCVEN)
@nLin,130 Psay CVALTOCHAR(ADBSQL->ADB_TOTAL)
@nLin,00 Psay Replicate("_",150)
ADBSQL->(dbSkip())
nLin++

Enddo
Endif
(cAlias)->(dbSkip()) // Avanca o ponteiro do registro no arquivo

ENDDO

SET DEVICE TO SCREEN

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

MS_FLUSH()

RETURN

STATIC FUNCTION CriaSx1(cPerg)

Local aArea := GetArea()
Local aPerg := {}

AADD(aPerg,{ "DATA DE:","","","mv_ch1","D",8,0,0,"G","","mv_par01","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AADD(aPerg,{ "DATA ATE:","","","mv_ch2","D",8,0,0,"G","","mv_par02","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AADD(aPerg,{ "Contrato de:","","","mv_ch3","C",6,0,1,"C","","mv_par03","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AADD(aPerg,{"Contrato ate:","","","mv_ch4","C",6,0,1,"G","","mv_par04","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AjustaSx1(cPerg,aPerg)
RestArea(aArea)
RETURN

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 10 meses atrás #19992 por lalberto
Respondido por lalberto no tópico relatorio nao salva
Vitor boa noite, cara não entendi muito bem a logica desse relatorio seu, porque essa query no meio de um do while ?

cSql:= " SELECT * FROM "+RETSQLNAME("ADB")+ " ADB "
cSql+= " WHERE "
cSql+= " ADB_NUMCTR = ‘"+ADA->ADA_NUMCTR+"‘ "
If !empty(mv_par04)
cSql+= " AND ADB_NUMCTR BETWEEN ‘"+mv_par03+"‘ AND ‘"+mv_par04+"‘ "
Endif
cSql+= " AND ADB.D_E_L_E_T_ <> ‘*‘ "
cSql+= " ORDER BY ADB_NUMCTR "

If Select("ADBSQL") > 0
ADBSQL->(DbCloseArea())
End
TcQuery cSql New Alias "ADBSQL"

desculpa mas ta muito confuso.

poderia explicar a logica que precisa ai posso entender melhor.

Abraços.

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
10 anos 10 meses atrás #19995 por vitor kwon
Respondido por vitor kwon no tópico relatorio nao salva
LUIZ, DESCULPA ENVIEI A FONTE DE TESTE QUE ESTAVA FAZENDO COM QUERY.... SEGUE O TRECHO DA FONTE QUE ESTOU DESENVOLVENDO.....SOU MEGA INICIANTE, AQUELA FONTE COM A QUERY DO MEIO FOI UM COLEGA DO SITE QUE ME AJUDOU...RSRSRS.....OBRIGADO!!!

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Processamento. RPTSTATUS monta janela com a regua de processamento. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

RptStatus({|| RunReport(cTitulo,cTamanho,cNomeprog,nTipo,cAlias) },cTitulo)
Return



Static Function RunReport(cTitulo,cTamanho,cNomeprog,nTipo,cAlias)
LOCAL nTotal := 0
Local nLin := 220
Local cCabec1 := ""
Local cCabec2 := ""
LOCAL pTven := 0
LOCAL cFil := 0
LOCAL cFi := ""

LOCAL Posi:= Posicione("SC6",12,xFilial("SC6")+ADB->ADB_NUMCTR,"C6_NUM")

cCabec1 :="Relatorio Contratos"
cCabec2 :="RELATORIO TESTE EMPRESA LTDA"




SetRegua(RecCount())

While (cAlias)->(!eof())
DBSELECTAREA("ADB")
DBSETORDER(1)
dbSeek(xFilial(cAlias)+ADA->ADA_NUMCTR,.T.)


DBSELECTAREA("SC6")
DBORDERNICKNAME("CONT")
dbSeek(xFilial(cAlias)+SC6->C6_CONTRAT+SC6->C6_PRODUTO+SC6->C6_NUM)


If MV_PAR01 > ADA->ADA_EMISSA
(cAlias)->( dbSkip())
Loop
EndIf

If MV_PAR02 < ADA->ADA_EMISSA
(cAlias)->( dbSkip() )
Loop
EndIf

If MV_PAR03 > ADA->ADA_NUMCTR
(cAlias)->( dbSkip())
Loop
EndIf

If MV_PAR04 < ADA->ADA_NUMCTR
(cAlias)->( dbSkip())
Loop
EndIf


If MV_PAR05 > ADA->ADA_CODCLI
(cAlias)->( dbSkip())
Loop
EndIf

If MV_PAR06 < ADA->ADA_CODCLI
(cAlias)->( dbSkip() )
Loop
EndIf

If nLin > 55
Cabec(cTitulo,cCabec1,cCabec2,cNomeProg,cTamanho,nTipo)
nLin := 9
Endif


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



@nLin,00 PSAY ("Cliente: ")+ ADA->ADA_CONTR2 +SPACE(33)+"Quant:"+SPACE(2)+"Valor unit:"+space(2)+"Empenhado"+SPACE(2)+" Saldo:"+SPACE(4)+"Valor Empenhado:"+SPACE(8)+" Pedido :"+SPACE(6)+" Nota Fiscal:"
nLin++
@nLin,00 PSAY ("Contrato: ")+ ADB->ADB_NUMCTR
nLin++

@nLin,00 PSAY ("Pedido Inicial: ")+IF(Posicione("SC6",12,xFilial("SC6")+ADB->ADB_NUMCTR,"C6_NUM")<>CVALTOCHAR(cFil)," Sem Pedido :",(Posicione("SC6",12,xFilial("SC6")+ADB->ADB_NUMCTR,"C6_NUM")))


nLin +=3


DBSELECTAREA("SC6")
DBORDERNICKNAME("CONT")
dbSeek(xFilial(cAlias)+SC6->C6_CONTRAT+SC6->C6_PRODUTO+SC6->C6_NUM)




While ("ADB")->(!EOF()) .AND. ADB->ADB_Filial == xFilial("ADB") .AND. (SC6->C6_CONTRAT == ADA->ADA_NUMCTR);
.AND. ( ADB->ADB_NUMCTR == ADA->ADA_NUMCTR )


If nLin > 55
Cabec(cTitulo,cCabec1,cCabec2,cNomeProg,cTamanho,nTipo)
nLin := 9
Endif


@nLin,00 Psay ("ITEM :")+CVALTOCHAR(ADB->ADB_ITEM)
@nLin,10 Psay CVALTOCHAR(ADB->ADB_DESPRO)
@nLin,50 Psay CVALTOCHAR(ADB->ADB_QUANT)
@nLin,60 Psay CVALTOCHAR(ADB->ADB_PRCVEN)
@nLin,70 Psay CVALTOCHAR(ADB->ADB_QTDEMP)
@nLin,80 Psay CVALTOCHAR(ADB->ADB_QUANT - ADB->ADB_QTDEMP)
@nLin,90 Psay (ADB->ADB_QTDEMP * ADB->ADB_PRCVEN ) PICTURE "@E 999,999.99"




DBSELECTAREA("SC6")
DBSETORDER(12)
dbSeek(xFilial(cAlias)+SC6->C6_CONTRAT+SC6->C6_PRODUTO+SC6->C6_NUM+SC6->C6_ITEM+SC6->C6_NOTA)
If SC6->C6_CONTRAT == ADB->ADB_NUMCTR .AND. SC6->C6_PRODUTO == ADB->ADB_CODPRO .AND. SC6->C6_QTDENT == ADB->ADB_QTDENT .AND. SC6->C6_ITEM == ADB->ADB_ITEM



@nLin,117 Psay IF(SC6->C6_NUM==CVALTOCHAR(cFi)," Sem Pedido :",SC6->C6_NUM)

@nLin,132 Psay SC6->C6_NOTA



SC6->(DBSKIP())
ENDIF


nLin++

pTven += (ADB->ADB_QTDEMP * ADB->ADB_PRCVEN )
nTotal+= ADB->ADB_TOTAL


ADB-> (dbSkip())


ENDDO

If nLin > 55
Cabec(cTitulo,cCabec1,cCabec2,cNomeProg,cTamanho,nTipo)
nLin := 9
Endif

@nLin,00 PSAY Replicate("-", 150 )
nLin := nLin + 1


@nLin,80 Psay "Valor Total do Contrato:"
@nLin,130 Psay (nTotal) PICTURE "@E 999,999,999.99"

nLin++
@nLin,80 Psay "Valor Soma dos Pedidos Empenhados:"
@nLin,130 Psay (pTven )PICTURE "@E 999,999,999.99"
nLin++
@nLin,80 Psay "Saldo Total do Contrato:"
@nLin,130 Psay (nTotal - pTven ) PICTURE "@E 999,999,999.99"

nLin+= 3
nTotal := 0
pTven := 0
(cAlias)->(dbSkip())

ENDDO






//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ 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
dbCommitAll()
OurSpool(wnrel)
Endif
MS_FLUSH()
Return






STATIC FUNCTION CriaSx1(cPerg)

Local aArea := GetArea()
Local aPerg := {}

AADD(aPerg,{ "DATA DE:","","","mv_ch1","D",8,0,0,"G","","mv_par01","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AADD(aPerg,{ "DATA ATE:","","","mv_ch2","D",8,0,0,"G","","mv_par02","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AADD(aPerg,{ "Contrato de:","","","mv_ch3","C",6,0,1,"G","","mv_par03","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AADD(aPerg,{"Contrato ate:","","","mv_ch4","C",6,0,1,"G","","mv_par04","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AADD(aPerg,{"Cliente de:","","","mv_ch5","C",8,0,1,"G","","mv_par05","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})


AADD(aPerg,{"Cliente de:","","","mv_ch6","C",8,0,1,"G","","mv_par06","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})


AjustaSx1(cPerg,aPerg)
RestArea(aArea)
RETURN

Por favor Acessar ou Registrar para participar da conversa.

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