Página 1 de 1

Quebra em relatorio

Enviado: 28 Fev 2007 19:54
por Sergio_ASSilva
Saudacoes a todos,

Caros colegas, tenho um arquivo com os seguintes campos:

CODIGO C 6
NOME C 30
DOCUMENTO C 6
DATA D 8
VALOR N 12 2

Como faco para emitir por um determinado intervalo de data e a cada mu
de codigo possa fazer a quebra?



Ex:
PERIODO DE: 01/01/2007 A 04/01/2007


00002-1 SERGIO AUGUSTO SILVA
000001 01/01/2007 30,00
000002 02/01/2007 12,00

00003-2 PAULO JOSE
000001 03/01/2007 10,00
000002 04/01/2007 112,00

Grato,

Sérgio

Enviado: 28 Fev 2007 22:17
por Clipper
Prezado Colega existe várias formas de você fazer isso, porém como você usa NTX a mais fácil é usando um arquivo temporário.

Exemplo básico :

Código: Selecionar todos

DATAINI:= DATAFIN:=CTOD(SPACE(8))

@ 10,00 SAY "Data inicial : " GET DATAINI VALID DATAINI<>CTOD(SPACE(8))
@ 11,00 SAY "Data final : " GET DATAFIN VALID DATAFIM>=DATAINI
READ

SELE 1
USE DUPLICAT
COPY TO ARQTEMP FOR DATA>=DATAINI .AND. DATA<=DATAFIN
USE

USE ARQTEMP
INDEX ON CODIGO TO ARQTEMP ALIAS TEMP

SELE 2
USE CLIENTES INDEX CLIENTES ALIAS CLIENTES

MCOD=SPACE(6)
LN=0
SET DEVICE TO PRINT

DO WHIL .NOT. EOF()
   IF MCOD<>CODIGO
       KCOD=CODIGO 
       SELE CLIENTES
       DBSEEK(KCODIGO)  // Pega o nome do cliente no cadastro
       SELE TEMP
      LN++
      @ LN,00 SAY CODIGO PICT "@R 99999-9"
      @ LN,08 SAY NOMECLI
      LN++
   ENDIF
   @ LN,00 SAY DOCUMENTO
   @ LN,08 SAY DATA PICT "99/99/9999"
   @ LN,20 SAY VALOR PICT "@E 999,999.99"
   LN++
   SKIP
   MCOD=CODIGO
ENDDO

SET PRINTER TO
SET DEVICE TO SCREEN
Existe maneira mais prática mas creio que essa ficará mais fácil para seu aprendizado.

Até logo.

Marcelo

Enviado: 28 Fev 2007 22:51
por sygecom
Buenas....vc pode usar o SET FILTER tb...claro que o desempenho dele dependendo da quantidade de registros no seu dbf pode se tornar uma solução de M****.....eu soh passei aqui pra dizer que existem varias opções...para sua duvida....abaixo segue um exemplo com o SET FILTER..

Conforme o exemplo do Marcelo é soh troque o...

Código: Selecionar todos

COPY TO DATA>=DATAINI .AND. DATA<=DATAFIN  //por
SET FILTER TO DATA>=DATAINI .AND. DATA<=DATAFIN

Abraços

Enviado: 01 Mar 2007 08:15
por Sergio_ASSilva
Valeu pessoal,

Obrigado pelas informacoes! :))