Relatórios

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Leandro2C
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 04 Jan 2006 11:06

Relatórios

Mensagem por Leandro2C »

Caros colegas, por favor, me deêm uma dica:
por exemplo, num sistema de receber, no recebe.dbf,

recebe.dbf
vendedor c 5
cliente c 5
valor n 9 2
datven d
receb c 1 -> (em branco = a receber - "*" = recebido)

índice -> vendedor (cdx)

preciso criar um relatório que me dará, por vendedor, a situação dos
clientes do próprio, disposto da seguinte forma:

vendedor
cliente1 valor receb ->" " -> a receber
cliente1 valor receb ->'*' -> recebido

ou seja, preciso que saia p/ vendedor+cliente+receb (a receber primeiro).
sei que posso criar um índice a mais p/ isso (foi o que fiz), mas
acontece que está crescendo demais os tags por cdx, devido
aos diversos relatórios necessários. Li que pode ser
feito uma cópia p/ dbf temporário, que pode ser criado
um índice temporário. Realmente não sei a melhor solução.
Quem puder postar um pequeno exemplo, já ajudaria bastante.
Obrigado à todos.
Leandro
São Lourenço - MG
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Criar um indice é a melhor opção.
Criar arquivo temporário acarreta alguns problemas, mas vamos tentar.

xcodv := <código vendedor>
dbseek(xcodv)
copy to arqtemp while vendedor = xcodv

use arqtemp new
index on cliente + recebe tag arqt to arqtemp
// index on cliente + recebe to arqtemp

while !eof()

<imprime o relatório>

end

arqtemp->(dbclosearea())
ferase('arqtemp.dbf')
ferase('arqtemp.cdx') // ou ferase('arqtemp.ntx')
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Desculpe. Entendi errado o que vc quer fazer.
Mas ainda acho que índice temporário não é legal.
Veja se o seguinte resolve:

set index to
index on vendedor + cliente + receb tag hum to indtemp

dbgotop()
while !eof()

<imprime o relatório>

end

set index to
set index to <nome do arq de índice original>

ferase('indtemp.cdx')
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Leandro2C
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 04 Jan 2006 11:06

Mensagem por Leandro2C »

Ok, vou tentar como vc instruiu (criando um índice temporário). Muito obrigado.
Leandro
São Lourenço - MG
Leandro2C
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 04 Jan 2006 11:06

Mensagem por Leandro2C »

Caro amigo, não querendo abusar da sua boa vontade, como faria nesse caso de rede:

usuario=´MARIO´
indtemp=subs(usuario,1,4)+subs(time(),1,2)

set index to
index on vendedor + cliente + receb tag hum to &indtemp

dbgotop()
while !eof()

<imprime o relatório>

end

set index to
set index to <nome do arq de índice original>

??????? ferase('indtemp.cdx') ?????????????
não estou conseguindo apagar o índice temporário

Obrigado.
Leandro
São Lourenço - MG
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Vc usou uma variável para criar o índice.
Use a mesma, mas coloque a extensão.

ferase(indtemp + '.cdx')
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Leandro2C
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 04 Jan 2006 11:06

Mensagem por Leandro2C »

Ok, amigo, vc me prestou 2 grandes favores. Valeu mesmo! Se precisar, estamos aí.
Muito obrigado.
Leandro
São Lourenço - MG
:{ :{ :{
Responder