Estou tentando criar meu primeiro relatório em clipper coisa simples mas estou apanhando não sei onde. tenho um banco de dados movim(conta,data,ct,dat_lanc,valor) clientes(conta,nome,endereço) preciso que o relatório saia apenas as contas com os nomes dos clientes com o saldo devedor no periodo solicitado.Antes até imprimia só que tudo errado, mas agora de tanto mexer e re-mexer no fonte o papel fica parado perto da cabeça de impressão e não imprime nada, andei pesquisando aqui no site e vi uma serie de tipos de filtragem, confesso que ainda estou meio perdido, se alguém puder me mostar onde estou errando, fico grato. segue abaixo meu fonte (só não reparem a simplicidade do mesmo).
Código: Selecionar todos
*PROGRAMA : CCOP33
*AUTOR : GELSON
*DATA : 04/04/2005
*OBJETIVO : EMITIR RELACAO DE SALDOS DEVEDORES
*
CLEAR
mlinha = 66
mfolha = 1
mtotsal = 0.00
mdat_ini = CTOD(' / / ')
mdata = CTOD(' / / ')
mdatfim = CTOD(' / / ')
mdata = CTOD(' / / ')
mtipo = 0
USE CLIENTES INDEX INCLIENT
SELECT 2
USE MOVIM INDEX IMOVIM
SELECT 3
USE HISTOR INDEX IHISTOR
@12,10 SAY 'INFORME DATA INICIAL:'
@12,34 GET mdat_ini PICTURE '99'
@13,10 SAY 'INFORME DATA FINAL:'
@13,34 GET mdatfim
@14,01 SAY 'INFORME O TIPO:'
@14,21 GET mtipo PICTURE '9'
@14,23 SAY '1 -> CARRETEIRO'
@15,23 SAY '2 -> CLIENTES'
@16,23 SAY '3 -> FUNCIONARIOS'
@17,23 SAY '4 -> TODOS'
@24,11 SAY DAY(DATE())
@24,16 SAY CMONTH(DATE())
@24,25 SAY YEAR(DATE())
READ
SET CONSOLE OFF
SET PRINT ON
?? CHR(27) + CHR(15)
SET PRINT OFF
SET CONSOLE ON
SET DEVICE TO PRINT
SELECT 1
DO WHILE .NOT. EOF()
IF CONTA = '99998'
SKIP
LOOP
ENDIF
DO CASE
CASE mtipo = 1
IF VAL(CONTA) > 19999
SKIP
LOOP
ENDIF
CASE mtipo = 2
IF VAL(CONTA) > 30000 .OR. VAL(CONTA) < 20000
SKIP
LOOP
ENDIF
CASE mtipo = 3
IF VAL(CONTA) < 30000
SKIP
LOOP
ENDIF
CASE mtipo = 4
IF VAL(CONTA) < 1 .OR. VAL(CONTA) > 99998
SKIP
LOOP
ENDIF
ENDCASE
SELECT 2
mvalor = 0.00
SEEK CLIENTES->CONTA
DO WHILE CLIENTES->CONTA = CONTA .AND. DATA <= mdatfim;
.AND. .NOT. EOF()
* SET FILTER TO CT = 01 //tentei usar não deu certo
IF CT = 01
mvalor = mvalor + VALOR
ENDIF
SKIP
ENDDO
IF mlinha > 50
@1,10 SAY '** xxxxxxxxxxxxxxxx ** - xxxxxxxxxxx'
@1,65 SAY 'FOLHA'
@1,69 SAY mfolha PICTURE '999'
@2,20 SAY 'RELACAO DE SALDOS DEVEDORES ATE'
SET CENTURY ON
@2,48 SAY mdat_ini
@2,61 SAY mdatfim
SET CENTURY OFF
DO CASE
CASE mtipo = 1
@2,75 SAY 'CARRETEIROS'
CASE mtipo = 2
@2,75 SAY 'CLIENTES'
CASE mtipo = 3
@2,75 SAY 'FUNCIONARIOS'
CASE mtipo = 4
@2,75 SAY 'TODOS'
ENDCASE
@4,4 SAY 'CONTA'
@4,14 SAY 'NOME'
@4,50 say 'SALDO'
mfolha = mfolha + 1
mlinha = 5
ENDIF
SELECT 1
@mlinha,4 SAY CONTA
@mlinha,10 SAY NOME
IF mvalor < 0.00
@mlinha,44 SAY -mvalor PICTURE '9,999,999,999.99D'
mlinha = mlinha + 1
SKIP
ENDIF
ENDDO
@mlinha,35 SAY 'T O T A L = >'
EJECT
SET DEVICE TO SCREEN
SET CONSOLE OFF
SET PRINT ON
?? CHR(27) + '@'
SET PRINT OFF
SET CONSOLE ON
EJECT
USE
CLEAR
RETURN

