DATA

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

conde
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 07 Jul 2004 19:20

DATA

Mensagem por conde »

Ola amigos , alguem que me diga porque meu relatorio por mes/ano nao imprime , so ejeta a folha em branco . Grato

Código: Selecionar todos

select (1)
USE CAD1
index on obra to c1ind_obra
select (2)
USE CAD2
SET DATE TO BRITISH
SET CENTURY ON
index on obra to c2ind_obra
INDEX ON NUMERO TO CAD2IND_NUMERO
INDEX ON left (DTOS(PAGAMENTO),6)TO CAD2_IND2
set relation to cad2->obra into cad1
V_SOMA=0
v_ANOMES=SPACE(6)
V_mesano=space(6)
dbselectarea (2)
SET COLOR TO "R+"
BORDA=CHR(177)+CHR(177)+CHR(177)+CHR(177)+CHR(177)+CHR(177)+CHR(177)+CHR(177)
CLEAR
@ 3,1,24,79 BOX BORDA
@ 1,1,24,79 BOX BORDA
@ 2,10 SAY "NOME DO CLIENTE - RELATORIO DE FATURAS PAGAS"
@ 18,20 SAY "DIGITE O MES E ANO: " GET v_MESANO PICT "@R 99/9999"
READ
V_MES = LEFT (v_MESANO,2)
V_ANO = RIGHT ( V_MESANO,4)
SEEK V_ANOMES 
CL=66
CLEAR
SET PRINTER  ON
SET DEVICE TO PRINTER
DO WHILE v_ANOMES = DTOS(PAGAMENTO).AND. !EOF()
V_SOMA+=VALOR
if cl>60
CL=1
@ CL,50
@ cl,30 say " NOME DO CLIENTE."
CL=CL+2
@ CL,1 SAY " LISTAGEM DE FATURAS PAGAS "
@ CL,50 SAY DATE()
@ CL,70 SAY TIME()
??chr(13)
??chr(15)
CL=CL+2
@ CL,1 SAY "OBRA"
@ CL,12 SAY "EMPRESA"
@ CL,61 SAY "NUMERO"
@ CL,70 SAY "VALOR"
@ CL,82 SAY "EMISSAO"
@ CL,98 SAY "VENCIMENTO"
@ CL,112 SAY "PAGAMENTO"
@ CL,125 SAY "VLR PAGO"
CL=CL+1
ENDIF
dbselectarea (1)
@ CL,1 SAY OBRA
dbselectarea (1)
@ CL,12 SAY EMPRESA
dbselectarea (2)
@ CL,61 SAY NUMERO
@ CL,66 SAY VALOR
@ CL,82 SAY EMISSAO
@ CL,98 SAY VENCIMENTO
@ CL,112 SAY PAGAMENTO
@ CL,123 SAY VPAGO
cl=cl+1
SKIP
ENDDO
@ CL,1 SAY REPLICATE ("-",133)
CL=CL+1
@ CL,40 SAY "TOTAL  =>"
@ CL,63 SAY V_SOMA
eject
CLEAR
SET PRINT OFF
SET DEVICE TO SCREEN
RETURN
Editado pela última vez por Pablo César em 09 Abr 2012 10:16, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Conde,

Sempre que se cria arquivos de índices é necessário definir depois quais os arquivos serão usados com o DBF, neste caso, você sempre tem que usar o comando SET INDEX TO para setar os arquivos de índices criados e também para ordenar estes índices, isto é, qual será o primeiro (mestre), o segundo, etc...
Para o seu relatório ficar certinho você terá de fazer as seguintes modificações:

Procure a seguinte linha de comando no seu relatório:

Código: Selecionar todos

INDEX ON left (DTOS(PAGAMENTO),6)TO CAD2_IND2
Coloque logo abaixo dela a seguinte linha de comando:

Código: Selecionar todos

SET INDEX TO C2IND_OBRA, CAD2IND_NUMERO,CAD2_IND2
Procure por:

Código: Selecionar todos

dbselectarea (2)
Coloque logo abaixo desta linha:

Código: Selecionar todos

SET ORDER TO 3
Procure por:

Código: Selecionar todos

V_MES = LEFT (v_MESANO,2) 
V_ANO = RIGHT ( V_MESANO,4) 
SEEK V_ANOMES
Substitua estas linhas por:
V_MES = LEFT (v_MESANO,2)
V_ANO = RIGHT ( V_MESANO,4)
V_ANOMES = V_ANO+V_MES
SEEK V_ANOMES
Procure por:

Código: Selecionar todos

DO WHILE v_ANOMES = DTOS(PAGAMENTO).AND. !EOF()
Substitua esta linha por:

Código: Selecionar todos

DO WHILE !EOF()
  IF V_ANOMES != LEFT(DTOS(PAGAMENTO),6)
    EXIT
  ENDIF
Agora mais uma observação...
Você criou um relacionamento entre os dois DBFs pelo campo OBRA, assim você não precisa ficar selecionando o arquivo CAD1 para mostrar algum campo deste arquivo.

Neste caso, procure pelas seguintes linhas:

Código: Selecionar todos

dbselectarea (1) 
@ CL,1 SAY OBRA 
dbselectarea (1) 
@ CL,12 SAY EMPRESA 
dbselectarea (2)
Substitua por:

Código: Selecionar todos

@ CL,1 SAY CAD1->OBRA
@ CL,12 SAY CAD1->EMPRESA
Acho que vai resolver...

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder