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
Quebra em relatorio
Moderador: Moderadores
- Sergio_ASSilva
- Usuário Nível 2

- Mensagens: 92
- Registrado em: 09 Mar 2006 10:58
- Localização: Santo Estevão (Ba)
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 :
Existe maneira mais prática mas creio que essa ficará mais fácil para seu aprendizado.
Até logo.
Marcelo
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
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
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...
Abraços
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<=DATAFINAbraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Sergio_ASSilva
- Usuário Nível 2

- Mensagens: 92
- Registrado em: 09 Mar 2006 10:58
- Localização: Santo Estevão (Ba)
