Por Favor, preciso de ajuda urgente...
Moderador: Moderadores
Por Favor, preciso de ajuda urgente...
Estou fazendo um relatorio da conta dos representantes do meu sistema, e criei o seguinte filtro:
sele saldo
index on datamov to indtemp for codreP=xcodrep .and. datamov>=xdataini .and. datamov<=xdatafim
Que seria para filtrar entre todos, apenas os que contiverem XCODREP no campo CODREP, e destes que sobrarem, pra ele filtrar o campo DATAMOV, os que estiverem entre as datas XDATAINI e XDATAFIM, criei o filtro citado acima, mas que não está funcionando muito bem, parece q ao invés de ele filtrar apenas os que tiverem XCODREP, ele seleciona os que não tem o XCODREP digitado pelo cliente, e a respeito da data, ele não está filtrando o periodo, ele apenas filtra os que tem XDATAFIM=DATAMOV, ta meio confuso, gostaria que alguem desse uma analizada pra mim, o nome do *.dbf é SALDO.DBF. Obrigado
sele saldo
index on datamov to indtemp for codreP=xcodrep .and. datamov>=xdataini .and. datamov<=xdatafim
Que seria para filtrar entre todos, apenas os que contiverem XCODREP no campo CODREP, e destes que sobrarem, pra ele filtrar o campo DATAMOV, os que estiverem entre as datas XDATAINI e XDATAFIM, criei o filtro citado acima, mas que não está funcionando muito bem, parece q ao invés de ele filtrar apenas os que tiverem XCODREP, ele seleciona os que não tem o XCODREP digitado pelo cliente, e a respeito da data, ele não está filtrando o periodo, ele apenas filtra os que tem XDATAFIM=DATAMOV, ta meio confuso, gostaria que alguem desse uma analizada pra mim, o nome do *.dbf é SALDO.DBF. Obrigado
novo
Agora fiz um filtro basico, que é:
sele saldo
set filter to codrep=xcod
go top
... comandos da impressão...
dai ele agora esta filtrando apenas o reprensentante indicado no campo XCOD, mas agora preciso saber como faço pra ele filtrar também o intervalo de datas, que é como citei acima: XDATAINI, XDATAFIM... Obrigado...
sele saldo
set filter to codrep=xcod
go top
... comandos da impressão...
dai ele agora esta filtrando apenas o reprensentante indicado no campo XCOD, mas agora preciso saber como faço pra ele filtrar também o intervalo de datas, que é como citei acima: XDATAINI, XDATAFIM... Obrigado...
-
Irineu
- Usuário Nível 2

- Mensagens: 61
- Registrado em: 13 Ago 2003 22:01
- Localização: Curitia-PR
- Contato:
Coloque assim pra ver o que acontece.
sele saldo
index on datamov to indtemp for (codreP=xcodrep .and. datamov>=xdataini .and. datamov<=xdatafim)
sele saldo
index on datamov to indtemp for (codreP=xcodrep .and. datamov>=xdataini .and. datamov<=xdatafim)
Irineu - < http://irineufotos.servehttp.com >
Prezado Junior
Já lhe falei que não tem como dar errado, o problema deve ser outro, eu acho que você deve estar com SET UNIQUE ON, que está fazendo com que apareçam apenas alguns registros. Mas como lhe disse anteriormente é melhor você fazer o filtro com o COPY TO porque você pode fazer mesmo com os aquivos no modo SHARED o que não acontece com o INDEX.
Até logo.
Marcelo
Já lhe falei que não tem como dar errado, o problema deve ser outro, eu acho que você deve estar com SET UNIQUE ON, que está fazendo com que apareçam apenas alguns registros. Mas como lhe disse anteriormente é melhor você fazer o filtro com o COPY TO porque você pode fazer mesmo com os aquivos no modo SHARED o que não acontece com o INDEX.
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)
Aqui está o codigo do meu prg
Estou postando aqui para quem poder analizar e me dar uma sugestão... Obrigado
clear
cbc()
set epoch to 2005
set date brit
set century off
SET EXCLUSIVE OFF
SET CURS ON
SETCOLOR(cor2)
private xcod,xdataini,xdatafim
cx(1,0,20,79,"EXTRATO COMISSAO REPRESENTANTES",80)
do telacom
XDATAINI:= XDATAFIM:= CTOD(SPACE( 8 ))
sele 0
use saldo
select 0
use cadREP inde cadREP alias REP
set index to cadREP
SETCOLOR(COR2)
sele rep
xcod=codrep
stor 0 to xcod
@ 06,22 get xcod pict "999999"
read
ddr=savescreen(0,0,24,79)
seek xcod
xnome=nome
@ 06,31 say alltrim(xnome,1,35)
@ 07,22 get xdataini pict "99/99/99"
@ 08,22 get xdatafim pict "99/99/99"
read
if lastkey()=27
return
endif
Cc=" "
@ 24,4 say "Deseja Continuar(S/N)?" get cc pict '!' valid cc $ 'SN'
read
If lastkey()=27
do limpacom
endif
if cc="N"
do limpacom
else
sele saldo
copy to tempdbf for codrep=xcod .and. datamov>=xdataini .and. datamov<=xdatafim
use tempdbf new
do impcom
endif
****tela
procedure telacom()
SETCOLOR('N/W')
*/ 0....x....1....x....2....x....3....x....4....x....5....x....6....x....7....x....8/*
@ 06,02 say "Cod. Representante: "
@ 07,02 say "Data Inicial......: "
@ 08,02 say "Data Final........: "
return
**********
PROCEDURE LIMPACOM
stor (' / / ') to xdataini,xdatafim
stor 0 to xcod
restscreen(0,0,24,79,ddr)
return
*********
procedure impcom
LI=00
set device to print
//@ LI,00 say chr(14)+"E.C.S.Ind. Com. de Calcados Ltda."
//LI=LI+1
//@ LI,15 say "RELATORIO DE COMISSAO POR REPRESENTANTE"
//@ PROW()+1,00 SAY "--------------------------------------------------------------------------------"
//LI=LI+1
//@ LI,00 SAY "REPRESENTANTE: "+XNOME
//LI=LI+1
//@ LI,00 SAY "--------------------------------------------------------------------------------"
//LI=LI+1
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
go top
do while .not. eof()
SELE saldo
xcod=codrep
xmovimento=movimento
xdatamov=datamov
xvencimento=vencimento
xnota=nota
xvalor=valor
xsaldo=saldo
LI=LI+1
@ LI,00 SAY XDATAMOV
@ LI,10 SAY XMOVIMENTO
@ LI,31 SAY XNOTA
@ LI,44 SAY XVENCIMENTO
@ LI,60 SAY XVALOR
@ LI,71 SAY XSALDO
skip
ENDDO
SELE REP
SEEK XCOD
XSALDOATUAL=SALDO
xdata=date()
li=li+1
@ li,00 say replicate('-',79)
li=li+1
@ li,00 say "Saldo do Dia"
@ li,14 say xdata
@ li,30 say "Valor: R$"
@ li,40 say xsaldoatual
RETURN
clear
cbc()
set epoch to 2005
set date brit
set century off
SET EXCLUSIVE OFF
SET CURS ON
SETCOLOR(cor2)
private xcod,xdataini,xdatafim
cx(1,0,20,79,"EXTRATO COMISSAO REPRESENTANTES",80)
do telacom
XDATAINI:= XDATAFIM:= CTOD(SPACE( 8 ))
sele 0
use saldo
select 0
use cadREP inde cadREP alias REP
set index to cadREP
SETCOLOR(COR2)
sele rep
xcod=codrep
stor 0 to xcod
@ 06,22 get xcod pict "999999"
read
ddr=savescreen(0,0,24,79)
seek xcod
xnome=nome
@ 06,31 say alltrim(xnome,1,35)
@ 07,22 get xdataini pict "99/99/99"
@ 08,22 get xdatafim pict "99/99/99"
read
if lastkey()=27
return
endif
Cc=" "
@ 24,4 say "Deseja Continuar(S/N)?" get cc pict '!' valid cc $ 'SN'
read
If lastkey()=27
do limpacom
endif
if cc="N"
do limpacom
else
sele saldo
copy to tempdbf for codrep=xcod .and. datamov>=xdataini .and. datamov<=xdatafim
use tempdbf new
do impcom
endif
****tela
procedure telacom()
SETCOLOR('N/W')
*/ 0....x....1....x....2....x....3....x....4....x....5....x....6....x....7....x....8/*
@ 06,02 say "Cod. Representante: "
@ 07,02 say "Data Inicial......: "
@ 08,02 say "Data Final........: "
return
**********
PROCEDURE LIMPACOM
stor (' / / ') to xdataini,xdatafim
stor 0 to xcod
restscreen(0,0,24,79,ddr)
return
*********
procedure impcom
LI=00
set device to print
//@ LI,00 say chr(14)+"E.C.S.Ind. Com. de Calcados Ltda."
//LI=LI+1
//@ LI,15 say "RELATORIO DE COMISSAO POR REPRESENTANTE"
//@ PROW()+1,00 SAY "--------------------------------------------------------------------------------"
//LI=LI+1
//@ LI,00 SAY "REPRESENTANTE: "+XNOME
//LI=LI+1
//@ LI,00 SAY "--------------------------------------------------------------------------------"
//LI=LI+1
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
go top
do while .not. eof()
SELE saldo
xcod=codrep
xmovimento=movimento
xdatamov=datamov
xvencimento=vencimento
xnota=nota
xvalor=valor
xsaldo=saldo
LI=LI+1
@ LI,00 SAY XDATAMOV
@ LI,10 SAY XMOVIMENTO
@ LI,31 SAY XNOTA
@ LI,44 SAY XVENCIMENTO
@ LI,60 SAY XVALOR
@ LI,71 SAY XSALDO
skip
ENDDO
SELE REP
SEEK XCOD
XSALDOATUAL=SALDO
xdata=date()
li=li+1
@ li,00 say replicate('-',79)
li=li+1
@ li,00 say "Saldo do Dia"
@ li,14 say xdata
@ li,30 say "Valor: R$"
@ li,40 say xsaldoatual
RETURN
Junior
Tira esse SELE SALDO depois do DO WHILE .NOT. EOF(), lembre-se que o BD que será usado não é o SALDO.DBF e sim o TEMPDBF.DBF.
Até logo.
Marcelo
Tira esse SELE SALDO depois do DO WHILE .NOT. EOF(), lembre-se que o BD que será usado não é o SALDO.DBF e sim o TEMPDBF.DBF.
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)
Mude aqui tambem
Código: Selecionar todos
sele rep
Set Order To 1
While .t.
xcod:= 0
@ 06,22 get xcod pict "999999"
read
ddr:= savescreen()
seek xcod
If Eof()
@ 24, 10 Say Codigo nâo encontrado"
Inkey(5)
Loop
Elseif LastKey() == 27
Return .t.
Else
Exit
EndIf
End
xnome:= nome
Daniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Não deu
Tentei fazer isso que o colega falou, mas tambem não deu resultado... :/ Bah, ta dificil mesmo isto...
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
Código: Selecionar todos
clear
cbc()
set epoch to 2005
set date brit
set century on
SET EXCLUSIVE OFF
SET CURS ON
SETCOLOR(cor2)
private xcod,xdataini,xdatafim
cx(1,0,20,79,"EXTRATO COMISSAO REPRESENTANTES",80)
do telacom
XDATAINI:= XDATAFIM:= CTOD(SPACE( 8 ))
sele 0
use saldo
select 0
use cadREP inde cadREP alias REP
set index to cadREP
SETCOLOR(COR2)
sele rep
xcod=codrep
stor 0 to xcod
@ 06,22 get xcod pict "999999"
read
ddr=savescreen(0,0,24,79)
seek xcod
xnome=nome
@ 06,31 say alltrim(xnome,1,35)
@ 07,22 get xdataini pict "99/99/9999"
@ 08,22 get xdatafim pict "99/99/9999"
read
if lastkey()=27
return
endif
Cc=" "
@ 24,4 say "Deseja Continuar(S/N)?" get cc pict '!' valid cc $ 'SN'
read
If lastkey()=27
do limpacom
endif
if cc="N"
do limpacom
else
sele saldo
index on strzero(codrep,6)+dtos(DATAMOV) to saldo1
copy stru to tempdbf
use tempdbf alias temp new
sele saldo
dbseek(strzero(xCod,6)+dtos(xdataini),.t.)
while str(codrep,6)=str(xcod,6) .and. !eof()
if dtos(DATAMOV) < dtos(xdataini)
dbskip()
loop
endif
if dtos(DATAMOV) > dtos(xDataFim)
exit
endif
temp->(dbappend())
for i = 1 to saldo->(fcount())
temp->(fieldput(i,saldo->(fieldget(i))))
next
dbskip()
enddo
// Se existir dados a serem impressos
if temp->(lastrec()) > 0
do impcom
else
tone(2000,2)
tone(1000,3)
@ 24,4 say "Nao existem movimentos para esse representante..."
inkey(0)
return
endif
endif
****tela
procedure telacom()
SETCOLOR('N/W')
*/ 0....x....1....x....2....x....3....x....4....x....5....x....6....x....7....x....8/*
@ 06,02 say "Cod. Representante: "
@ 07,02 say "Data Inicial......: "
@ 08,02 say "Data Final........: "
return
**********
PROCEDURE LIMPACOM
stor (' / / ') to xdataini,xdatafim
stor 0 to xcod
restscreen(0,0,24,79,ddr)
return
*********
procedure impcom
LI=00
set device to print
//@ LI,00 say chr(14)+"E.C.S.Ind. Com. de Calcados Ltda."
//LI=LI+1
//@ LI,15 say "RELATORIO DE COMISSAO POR REPRESENTANTE"
//@ PROW()+1,00 SAY "--------------------------------------------------------------------------------"
//LI=LI+1
//@ LI,00 SAY "REPRESENTANTE: "+XNOME
//LI=LI+1
//@ LI,00 SAY "--------------------------------------------------------------------------------"
//LI=LI+1
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
//@ LI,00 SAY "DATA MOVIMENTO TITULO VENCIMENTO VALOR SALDO "
sele temp
go top
do while .not. eof()
xcod=codrep
xmovimento=movimento
xdatamov=datamov
xvencimento=vencimento
xnota=nota
xvalor=valor
xsaldo=saldo
LI=LI+1
@ LI,00 SAY XDATAMOV
@ LI,10 SAY XMOVIMENTO
@ LI,31 SAY XNOTA
@ LI,44 SAY XVENCIMENTO
@ LI,60 SAY XVALOR
@ LI,71 SAY XSALDO
skip
ENDDO
SELE REP
SEEK XCOD
XSALDOATUAL=SALDO
xdata=date()
li=li+1
@ li,00 say replicate('-',79)
li=li+1
@ li,00 say "Saldo do Dia"
@ li,14 say xdata
@ li,30 say "Valor: R$"
@ li,40 say xsaldoatual
RETURN
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
Deu certo
na verdade, eu e o Dudu_Xbase descobrimos que o erro estava era no modo de gravação anterior do meu DBF, que ao inves de salvar o ano como 2005, tava salvando como 1905, neste caso, eu pesquisava entre 2001 ateh 2005, e obviamente ele não encontrava nada... Mas Obrigado pela ajuda ai de todo mundu, tava precisando muito desse relatório, e agora funcionou... Vlw colegas
Tá vendo 
Quem manda tu ser teimoso, eu te disse 10 vezes para botar SET EPOCH 1999 no inicio do sistema, não foi ?
Eu tinha certeza que era isso...
Até logo.
Marcelo
Quem manda tu ser teimoso, eu te disse 10 vezes para botar SET EPOCH 1999 no inicio do sistema, não foi ?
Eu tinha certeza que era isso...
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)

