Ajuda com relatorio
Enviado: 21 Jul 2005 20:07
Olá pessoal, saudações a todos, sou novo no forum, e novato em clipper, to com um problema, tenho um relatorio que precisa ser organizado pelo nome so que nao estou tendo exito, sera que alguem poderia me ajudar? vai abaixo o meu fonte. Agradeço a todos mesmo, obrigado.
O problema que acontece que o nome dos clientes sai em branco.
set date brit
set talk off
set echo off
clea
UNLOCK ALL
CLOSE DATA
*---------------- VARIAVEIS DE MEMORIA ---------------------------------*
VMACAO = " "
VMOPCA = " "
VMPAGI := VMLINH := VMEXIT := 0
VMSIST = "COBRANCA"
*---------------- DEFINICAO DE ARQUIVOS --------------------------------*
IF .NOT. NET_USE("DEVCAD",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMDEVCAD := SELECT()
SET INDEX TO DEVCAD1
IF .NOT. NET_USE("CADDEV",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADDEV := SELECT()
SET INDEX TO CADDEV1
IF .NOT. NET_USE("CADLCT",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADLCT := SELECT()
SET INDEX TO CADLCT1
IF .NOT. NET_USE("CADCLI",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADCLI := SELECT()
SET INDEX TO CADCLI1, CADCLI2
IF .NOT. NET_USE("DESMEM",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMDESMEM := SELECT()
SET INDEX TO DESMEM5
IF .NOT. NET_USE("CADREC",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADREC := SELECT()
SET INDEX TO CADREC2
*------------------ EXECUCAO DO PROGRAMA ---------------------------------
DO WHILE .T.
VMDTIN = CTOD(" / / ")
VMDTFI = DATE()
FRAME(07,04,11,31,"CD")
@ 08,06 SAY "Data Inicial.:" GET VMDTIN PICT "99/99/99"
@ 10,06 SAY "Data Final...:" GET VMDTFI PICT "99/99/99"
READ
IF VMDTFI < VMDTIN
CONSIS("Data Final Menor Que a Inicial. Tecle [ENTER]")
LOOP
ENDIF
IF LASTKEY() = 27
UNLOCK ALL
CLOSE DATA
EXIT
ENDIF
VMPERI = "PERIODO DE.: "+DTOC(VMDTIN)+" A "+DTOC(VMDTFI)
VMCLIE = "00000"
FRAME(12,05,14,70,"CD")
@ 13,07 SAY "Cliente..:" GET VMCLIE PICT "99999"
READ
SELECT(VMCADCLI)
IF EMPTY(VMCLIE)
PROCURA(VMCLIE,"SITU=' '",VMCADCLI,"CL_CLIE+' '+CL_FANT",09,12)
IF VMLASTK = 1
LOOP
ENDIF
VMCLIE = CL_CLIE
ENDIF
IF .NOT. DBSEEK(" "+VMCLIE)
CONSIS("Cliente Inexistente ou Incorreto. Tecle [ENTER]")
LOOP
ENDIF
@ 13,18 SAY CL_CLIE+"-"+TRIM(CL_FANT) COLOR "G+"
VMEMPR = "CLIENTE.: "+TRIM(CL_NOME)
VMEMP1 := TRIM(CL_FANT)
VMEMP = CL_FANT
VMTIPO = " "
@ 23,03 SAY "Pagamentos [L]oja ou [A]cc? [L/A].:" GET VMTIPO PICT "!" VALID VMTIPO$"LA"
READ
@ 23,03 SAY SPACE(75)
@ 23,03 SAY "Continua? [S/N]" GET VMOPCA PICT "!"
READ
IF VMOPCA # "S"
UNLOCK ALL
CLOSE DATA
EXIT
ENDIF
SELECT(VMDESMEM)
SET FILTER TO SITU = " " .AND. DE_DTBX >= VMDTIN .AND. DE_DTBX <= VMDTFI .AND. DE_CLIE = VMCLIE
GO TOP
IF EOF()
UNLOCK ALL
CLOSE DATA
EXIT
ENDIF
IF NOTPRINT()
SET CONSOLE OFF
SET PRINT ON
ENDIF
VMTOT1 := VMTOT2 := VMTOT3 := VMTOT4 := VMTOT5 := 0
VMTTL1 := VMTTL2 := VMTTL3 := VMTTL4 := VMTTL5 := 0
DO WHILE .NOT. EOF()
IF IMPRES()
VMEXIT = 1
EXIT
ENDIF
IF DE_SITU # "4" .AND. DE_SITU # "6"
SKIP
LOOP
ENDIF
IF DE_CAPI = 0
SKIP
LOOP
ENDIF
VMPROC = DE_PROC
VMDTPG = DTOC(DE_DTBX)
VMCAPI = TRANSF(DE_CAPI,"@E 99,999.99")
VMJURO = TRANSF(DE_JURO+DE_VACC,"@E 9,999.99")
VMTOTA = TRANSF(DE_CAPI+DE_JURO+DE_VACC,"@E 99,999.99")
VMCOMI = TRANSF(DE_VACC,"@E 9,999.99")
VMREPA = TRANSF(DE_CAPI+DE_JURO+DE_VACC-DE_VACC,"@E 9,999.99")
VMRECI = DE_RECI
VMLOCA = " "
VMCOBR = DE_COBR
IF DE_COBR = "0002" .AND. VMTIPO = "L"
VMLOCA = "-Lj"
VMREPA = TRANSF(0,"@E 9,999.99")
VMTTL1 += DE_CAPI
VMTTL2 += DE_JURO+DE_VACC
VMTTL3 += DE_CAPI+DE_JURO+DE_VACC
VMTTL4 += DE_VACC
VMTTL5 += DE_CAPI+DE_JURO+DE_VACC-DE_VACC
ELSEIF DE_COBR # "0002" .AND. VMTIPO = "A"
VMTOT1 += DE_CAPI
VMTOT2 += DE_JURO+DE_VACC
VMTOT3 += DE_CAPI+DE_JURO+DE_VACC
VMTOT4 += DE_VACC
VMTOT5 += DE_CAPI+DE_JURO+DE_VACC-DE_VACC
ELSE
SKIP
LOOP
ENDIF
IF DE_SITU = "4"
VMPOSI = "Pc"+VMLOCA
ELSE
VMPOSI = "Tt"+VMLOCA
ENDIF
SELECT(VMCADREC)
IF DBSEEK(VMRECI)
VMPLAN = RC_PLAN
VMDTVC = DTOC(RC_VCTO)
ELSE
SELECT(VMDESMEM)
VMPLAN = SUBS(DE_PLAN,1,2)
VMDTVC = DTOC(DE_VCTO)
ENDIF
SELECT(VMDEVCAD)
DBSEEK(" "+VMPROC)
VMDEVE = DV_DEVE
VMDOCU = DV_NUDO
VMPARC = SUBSTR(DV_PARC,3,4)
* VMPLAN = VMPARC
* VMPLAN = VMULTP
VMPRIM = VAL(SUBS(DV_PARC,1,2))-1
VMVALO = 0
SELECT(VMCADLCT)
IF DBSEEK(" "+VMPROC+"01")
IF LC_POSI = " "
VMPRIM++
ENDIF
VMVALO = LC_VALO
* VMDTVC = LC_DATA
DO WHILE SITU+LC_PROC = " "+VMPROC
IF LC_POSI = " "
EXIT
ENDIF
VMVALO = LC_VALO
* VMDTVC = DTOC(LC_DATA)
VMPRIM++
SKIP
ENDDO
ENDIF
* VMDTVC = DTOC(VMDTVC)
VMUNIT = TRANSF(VMVALO,"@E 99,999.99")
VMPRIM = STRZERO(VMPRIM,2)
* VMPLAN = VMPRIM+VMULTP
SELECT(VMCADDEV)
DBSEEK(" "+VMDEVE)
VMNOME = SUBS(DV_NOME,1,20)
IF VMLINH > 35 .OR. VMLINH = 0
VMLINH = 0
VMPAGI++
CABEC3("P20310",VMPAGI,DATE(),80,VMSIST,"BORDERO DE PRESTACAO DE CONTAS")
? CHR(14)+CHR(15)+PADC(VMEMPR,67)+CHR(18)+CHR(20)
? CHR(14)+CHR(15)+PADC(VMEMP1,67)+CHR(18)+CHR(20)
? CHR(14)+CHR(15)+PADC(VMPERI,67)+CHR(18)+CHR(20)
? REPLIC("=",79)
? CHR(15)+"DOCUMENTO CLIENTE PP/PL DT. VCTO VLR PARC. DT. PGTO CAPITAL JR+MULTA TOTAL PG COMISSAO REPASSE POSICAO"+CHR(18)
* xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx0xxxxxxxxx0 xx/xx xx/xx/xx xx.xxx.xx xx/xx/xx xx.xxx.xx x.xxx.xx xx.xxx.xx x.xxx.xx x.xxx.xx
? REPLIC("=",79)
ENDIF
VMLINH++
? CHR(15)+VMDOCU+" "+VMNOME+" "+SUBSTR(VMPLAN,1,2)+"/"+VMPARC+" "+VMDTVC+" "+VMUNIT+" "+VMDTPG+" "+VMCAPI+" "+VMJURO+" "+VMTOTA+" "+VMCOMI+" "+VMREPA+" "+VMPOSI+CHR(18)
SELECT(VMDESMEM)
SKIP
IF EOF() .AND. VMLINH < 35
VMSPAC = " "
DO WHILE VMLINH < 35
? VMSPAC+"##"
VMSPAC = VMSPAC+" "
VMLINH++
ENDDO
ENDIF
ENDDO
IF VMLINH < 35
VMSPAC = " "
DO WHILE VMLINH < 35
? VMSPAC+"##"
VMSPAC = VMSPAC+" "
VMLINH++
ENDDO
ENDIF
VMTL1 = TRANSF(VMTTL1,"@E 99,999.99")
VMTL2 = TRANSF(VMTTL2,"@E 9,999.99")
VMTL3 = TRANSF(VMTTL3,"@E 99,999.99")
VMTL4 = TRANSF(VMTTL4,"@E 9,999.99")
* VMTL5 = TRANSF(VMTTL5,"@E 9,999.99")
VMTL5 = TRANSF(0,"@E 9,999.99")
VMTT1 = TRANSF(VMTOT1,"@E 99,999.99")
VMTT2 = TRANSF(VMTOT2,"@E 9,999.99")
VMTT3 = TRANSF(VMTOT3,"@E 99,999.99")
VMTT4 = TRANSF(VMTOT4,"@E 9,999.99")
VMTT5 = TRANSF(VMTOT5,"@E 9,999.99")
VMTT = TRANSF(VMTOT5-VMTTL4,"@E 9,999.99")
?
IF VMTIPO = "L"
? CHR(15)+SPACE(61)+"Total LOJA..: "+VMTL1+" "+VMTL2+" "+VMTL3+" "+VMTL4+" "+VMTL5+CHR(18)
ELSE
? CHR(15)+SPACE(61)+"Total ACC...: "+VMTT1+" "+VMTT2+" "+VMTT3+" "+VMTT4+" "+VMTT5+CHR(18)
ENDIF
?
? CHR(15)+VMEMP+CHR(18)+SPACE(12)+""
?
FINAL()
IF VMEXIT = 1
? "**** RELATORIO INTERROMPIDO ****"
ELSE
? "**** FIM DE RELATORIO ****"
ENDIF
SET PRINT OFF
SET CONSOLE ON
UNLOCK ALL
CLOSE DATA
EXIT
ENDDO
RETURN
O problema que acontece que o nome dos clientes sai em branco.
set date brit
set talk off
set echo off
clea
UNLOCK ALL
CLOSE DATA
*---------------- VARIAVEIS DE MEMORIA ---------------------------------*
VMACAO = " "
VMOPCA = " "
VMPAGI := VMLINH := VMEXIT := 0
VMSIST = "COBRANCA"
*---------------- DEFINICAO DE ARQUIVOS --------------------------------*
IF .NOT. NET_USE("DEVCAD",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMDEVCAD := SELECT()
SET INDEX TO DEVCAD1
IF .NOT. NET_USE("CADDEV",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADDEV := SELECT()
SET INDEX TO CADDEV1
IF .NOT. NET_USE("CADLCT",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADLCT := SELECT()
SET INDEX TO CADLCT1
IF .NOT. NET_USE("CADCLI",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADCLI := SELECT()
SET INDEX TO CADCLI1, CADCLI2
IF .NOT. NET_USE("DESMEM",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMDESMEM := SELECT()
SET INDEX TO DESMEM5
IF .NOT. NET_USE("CADREC",.F.,5,,.T.,.T.,"DBFNTX")
RETURN
ENDIF
VMCADREC := SELECT()
SET INDEX TO CADREC2
*------------------ EXECUCAO DO PROGRAMA ---------------------------------
DO WHILE .T.
VMDTIN = CTOD(" / / ")
VMDTFI = DATE()
FRAME(07,04,11,31,"CD")
@ 08,06 SAY "Data Inicial.:" GET VMDTIN PICT "99/99/99"
@ 10,06 SAY "Data Final...:" GET VMDTFI PICT "99/99/99"
READ
IF VMDTFI < VMDTIN
CONSIS("Data Final Menor Que a Inicial. Tecle [ENTER]")
LOOP
ENDIF
IF LASTKEY() = 27
UNLOCK ALL
CLOSE DATA
EXIT
ENDIF
VMPERI = "PERIODO DE.: "+DTOC(VMDTIN)+" A "+DTOC(VMDTFI)
VMCLIE = "00000"
FRAME(12,05,14,70,"CD")
@ 13,07 SAY "Cliente..:" GET VMCLIE PICT "99999"
READ
SELECT(VMCADCLI)
IF EMPTY(VMCLIE)
PROCURA(VMCLIE,"SITU=' '",VMCADCLI,"CL_CLIE+' '+CL_FANT",09,12)
IF VMLASTK = 1
LOOP
ENDIF
VMCLIE = CL_CLIE
ENDIF
IF .NOT. DBSEEK(" "+VMCLIE)
CONSIS("Cliente Inexistente ou Incorreto. Tecle [ENTER]")
LOOP
ENDIF
@ 13,18 SAY CL_CLIE+"-"+TRIM(CL_FANT) COLOR "G+"
VMEMPR = "CLIENTE.: "+TRIM(CL_NOME)
VMEMP1 := TRIM(CL_FANT)
VMEMP = CL_FANT
VMTIPO = " "
@ 23,03 SAY "Pagamentos [L]oja ou [A]cc? [L/A].:" GET VMTIPO PICT "!" VALID VMTIPO$"LA"
READ
@ 23,03 SAY SPACE(75)
@ 23,03 SAY "Continua? [S/N]" GET VMOPCA PICT "!"
READ
IF VMOPCA # "S"
UNLOCK ALL
CLOSE DATA
EXIT
ENDIF
SELECT(VMDESMEM)
SET FILTER TO SITU = " " .AND. DE_DTBX >= VMDTIN .AND. DE_DTBX <= VMDTFI .AND. DE_CLIE = VMCLIE
GO TOP
IF EOF()
UNLOCK ALL
CLOSE DATA
EXIT
ENDIF
IF NOTPRINT()
SET CONSOLE OFF
SET PRINT ON
ENDIF
VMTOT1 := VMTOT2 := VMTOT3 := VMTOT4 := VMTOT5 := 0
VMTTL1 := VMTTL2 := VMTTL3 := VMTTL4 := VMTTL5 := 0
DO WHILE .NOT. EOF()
IF IMPRES()
VMEXIT = 1
EXIT
ENDIF
IF DE_SITU # "4" .AND. DE_SITU # "6"
SKIP
LOOP
ENDIF
IF DE_CAPI = 0
SKIP
LOOP
ENDIF
VMPROC = DE_PROC
VMDTPG = DTOC(DE_DTBX)
VMCAPI = TRANSF(DE_CAPI,"@E 99,999.99")
VMJURO = TRANSF(DE_JURO+DE_VACC,"@E 9,999.99")
VMTOTA = TRANSF(DE_CAPI+DE_JURO+DE_VACC,"@E 99,999.99")
VMCOMI = TRANSF(DE_VACC,"@E 9,999.99")
VMREPA = TRANSF(DE_CAPI+DE_JURO+DE_VACC-DE_VACC,"@E 9,999.99")
VMRECI = DE_RECI
VMLOCA = " "
VMCOBR = DE_COBR
IF DE_COBR = "0002" .AND. VMTIPO = "L"
VMLOCA = "-Lj"
VMREPA = TRANSF(0,"@E 9,999.99")
VMTTL1 += DE_CAPI
VMTTL2 += DE_JURO+DE_VACC
VMTTL3 += DE_CAPI+DE_JURO+DE_VACC
VMTTL4 += DE_VACC
VMTTL5 += DE_CAPI+DE_JURO+DE_VACC-DE_VACC
ELSEIF DE_COBR # "0002" .AND. VMTIPO = "A"
VMTOT1 += DE_CAPI
VMTOT2 += DE_JURO+DE_VACC
VMTOT3 += DE_CAPI+DE_JURO+DE_VACC
VMTOT4 += DE_VACC
VMTOT5 += DE_CAPI+DE_JURO+DE_VACC-DE_VACC
ELSE
SKIP
LOOP
ENDIF
IF DE_SITU = "4"
VMPOSI = "Pc"+VMLOCA
ELSE
VMPOSI = "Tt"+VMLOCA
ENDIF
SELECT(VMCADREC)
IF DBSEEK(VMRECI)
VMPLAN = RC_PLAN
VMDTVC = DTOC(RC_VCTO)
ELSE
SELECT(VMDESMEM)
VMPLAN = SUBS(DE_PLAN,1,2)
VMDTVC = DTOC(DE_VCTO)
ENDIF
SELECT(VMDEVCAD)
DBSEEK(" "+VMPROC)
VMDEVE = DV_DEVE
VMDOCU = DV_NUDO
VMPARC = SUBSTR(DV_PARC,3,4)
* VMPLAN = VMPARC
* VMPLAN = VMULTP
VMPRIM = VAL(SUBS(DV_PARC,1,2))-1
VMVALO = 0
SELECT(VMCADLCT)
IF DBSEEK(" "+VMPROC+"01")
IF LC_POSI = " "
VMPRIM++
ENDIF
VMVALO = LC_VALO
* VMDTVC = LC_DATA
DO WHILE SITU+LC_PROC = " "+VMPROC
IF LC_POSI = " "
EXIT
ENDIF
VMVALO = LC_VALO
* VMDTVC = DTOC(LC_DATA)
VMPRIM++
SKIP
ENDDO
ENDIF
* VMDTVC = DTOC(VMDTVC)
VMUNIT = TRANSF(VMVALO,"@E 99,999.99")
VMPRIM = STRZERO(VMPRIM,2)
* VMPLAN = VMPRIM+VMULTP
SELECT(VMCADDEV)
DBSEEK(" "+VMDEVE)
VMNOME = SUBS(DV_NOME,1,20)
IF VMLINH > 35 .OR. VMLINH = 0
VMLINH = 0
VMPAGI++
CABEC3("P20310",VMPAGI,DATE(),80,VMSIST,"BORDERO DE PRESTACAO DE CONTAS")
? CHR(14)+CHR(15)+PADC(VMEMPR,67)+CHR(18)+CHR(20)
? CHR(14)+CHR(15)+PADC(VMEMP1,67)+CHR(18)+CHR(20)
? CHR(14)+CHR(15)+PADC(VMPERI,67)+CHR(18)+CHR(20)
? REPLIC("=",79)
? CHR(15)+"DOCUMENTO CLIENTE PP/PL DT. VCTO VLR PARC. DT. PGTO CAPITAL JR+MULTA TOTAL PG COMISSAO REPASSE POSICAO"+CHR(18)
* xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx0xxxxxxxxx0 xx/xx xx/xx/xx xx.xxx.xx xx/xx/xx xx.xxx.xx x.xxx.xx xx.xxx.xx x.xxx.xx x.xxx.xx
? REPLIC("=",79)
ENDIF
VMLINH++
? CHR(15)+VMDOCU+" "+VMNOME+" "+SUBSTR(VMPLAN,1,2)+"/"+VMPARC+" "+VMDTVC+" "+VMUNIT+" "+VMDTPG+" "+VMCAPI+" "+VMJURO+" "+VMTOTA+" "+VMCOMI+" "+VMREPA+" "+VMPOSI+CHR(18)
SELECT(VMDESMEM)
SKIP
IF EOF() .AND. VMLINH < 35
VMSPAC = " "
DO WHILE VMLINH < 35
? VMSPAC+"##"
VMSPAC = VMSPAC+" "
VMLINH++
ENDDO
ENDIF
ENDDO
IF VMLINH < 35
VMSPAC = " "
DO WHILE VMLINH < 35
? VMSPAC+"##"
VMSPAC = VMSPAC+" "
VMLINH++
ENDDO
ENDIF
VMTL1 = TRANSF(VMTTL1,"@E 99,999.99")
VMTL2 = TRANSF(VMTTL2,"@E 9,999.99")
VMTL3 = TRANSF(VMTTL3,"@E 99,999.99")
VMTL4 = TRANSF(VMTTL4,"@E 9,999.99")
* VMTL5 = TRANSF(VMTTL5,"@E 9,999.99")
VMTL5 = TRANSF(0,"@E 9,999.99")
VMTT1 = TRANSF(VMTOT1,"@E 99,999.99")
VMTT2 = TRANSF(VMTOT2,"@E 9,999.99")
VMTT3 = TRANSF(VMTOT3,"@E 99,999.99")
VMTT4 = TRANSF(VMTOT4,"@E 9,999.99")
VMTT5 = TRANSF(VMTOT5,"@E 9,999.99")
VMTT = TRANSF(VMTOT5-VMTTL4,"@E 9,999.99")
?
IF VMTIPO = "L"
? CHR(15)+SPACE(61)+"Total LOJA..: "+VMTL1+" "+VMTL2+" "+VMTL3+" "+VMTL4+" "+VMTL5+CHR(18)
ELSE
? CHR(15)+SPACE(61)+"Total ACC...: "+VMTT1+" "+VMTT2+" "+VMTT3+" "+VMTT4+" "+VMTT5+CHR(18)
ENDIF
?
? CHR(15)+VMEMP+CHR(18)+SPACE(12)+""
?
FINAL()
IF VMEXIT = 1
? "**** RELATORIO INTERROMPIDO ****"
ELSE
? "**** FIM DE RELATORIO ****"
ENDIF
SET PRINT OFF
SET CONSOLE ON
UNLOCK ALL
CLOSE DATA
EXIT
ENDDO
RETURN