Ajuda com Matrizes

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
matrix
Usuário Nível 3
Usuário Nível 3
Mensagens: 131
Registrado em: 06 Jul 2004 08:41
Localização: Paraná
Contato:

Ajuda com Matrizes

Mensagem por matrix »

Pessoal,
nao tenho muita pratica ou quase nada com matrizes e creio que precisarei da ajuda de vcs pra fazer o seguinte relatorio?

num arquivo tenho formas de pgto definidas com codigo e Descriçao, e preciso escolher o periodo e acumular as formas de pgto que houveram nesse periodo num resumo.
separar o periodo tranquilo, o problema é acumular os totais e guardar pra imprimir a cada descriçao seu valor acumulado.

agradeço a ajuda.
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

De uma olhada na sessão codigo fonte e verifique o codigo relacionado a relatório simples e perfeito.

Veja que o código possui a variável RESUMIR basta coloca-la como TRUE que cada dia sera acumulado.

No seu caso troque no INDEX o dtos(DATA) pelo campo onde voce armazena a condição de pagamento. Troque também a variável QUEBRA pois é esta que fará a parada da contagem em cada conjunto.

Os valores serão armazenados na variável SUM_0001 e se voce tiver mais valores use SUM_0002, SUM_000X, etc.

@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Por favor, explique melhor o que vc quer fazer. Exemplifique.
"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
matrix
Usuário Nível 3
Usuário Nível 3
Mensagens: 131
Registrado em: 06 Jul 2004 08:41
Localização: Paraná
Contato:

Mensagem por matrix »

tenho no arquivo assim:
01- dinheiro R$ 23,00
03- a prazo R$ 12,00
04- cartao R$ 2,50
01- dinheiro R$ 11,50
04- cartao R$ 3,50
01- dinheiro R$ 2,50

e assim por diante dentro do arquivo. entaum preciso emitir um relatorio dentro de um pediodo que seja um resumo da seguinte forma.

01- dinheiro R$ 37,00
03- a prazo R$ 12,00
04- cartao R$ 6,00

isso, creio que terei que ir acumulando numa matriz e depois mostra-la, mas aé q me apertei.
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

a_total := {}

[arquivo]->(dbgotop())
while ![arquivo]->(eof())
a1 := ascan(a_total, {|x| x[1] = [arquivo]->codigo})
if a1 = 0
aadd(a_total, {[arquivo]->codigo, 0})
a1 := len(a_total)
end
a_total[a1, 2] += [arquivo]->valor

[arquivo]->(dbskip())
end

for i := 1 to len(a_total)
? a_total[i, 1], a_total[i, 2]
next

*****************
Teste e comunique quaisquer problema.
[arquivo] Nome do arquivo que contém os dados.
"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
matrix
Usuário Nível 3
Usuário Nível 3
Mensagens: 131
Registrado em: 06 Jul 2004 08:41
Localização: Paraná
Contato:

Mensagem por matrix »

valeu, funcionando meu amigo,
nao querendo abusar, so faltou mostrar no FOR o "codigo"+"descricao"+"Valor", no resumo..............o calculo acumulado tá OK, podem mastigar mais essa ????

agradeço
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

a_total := {}

[arquivo]->(dbgotop())
while ![arquivo]->(eof())
a1 := ascan(a_total, {|x| x[1] = [arquivo]->codigo})
if a1 = 0
aadd(a_total, {[arquivo]->codigo, [arquivo]->descricao, 0})
a1 := len(a_total)
end
a_total[a1, 3] += [arquivo]->valor

[arquivo]->(dbskip())
end

for i := 1 to len(a_total)
? a_total[i, 1], a_total[i, 2], a_total[i, 3]
next
"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
matrix
Usuário Nível 3
Usuário Nível 3
Mensagens: 131
Registrado em: 06 Jul 2004 08:41
Localização: Paraná
Contato:

Mensagem por matrix »

Valeu, só fiz um ajustezinho e ta 10.
vejam.....


Set Printer to Lpt.txt
Set Device To Print

While EMISSA_SAI >= dDt1 .and. EMISSA_SAI <= dDt2 .and. !Eof()
IF linha=0
@ Linha+1,70 Say Padl(Date(),10)
@ Linha+2,10 Say Padc("Resumo Financeiro no Periodo de "+DTOC(dDt1)+" a "+DTOC(dDt2),60)
@ Linha+2,70 Say Padl(Time(),10)
@ Linha+3,00 Say "CX004"
@ Linha+3,72 Say "P g:"
@ Linha+3,77 Say Padl(Pag,3)
@ Linha+4,00 Say Repl("=",80)
Linha:=7
Endif

a1:= ascan(a_total,{|x| x[1] = Mov_sai->CODMEI_SAI})
If a1 = 0
aadd(a_total, {Mov_sai->CODMEI_SAI, Mov_sai->DESMEI_SAI, 0})
a1:= len(a_total)
Endif
a_total[a1,3] += Mov_sai->VLNOTA_SAI

Dbskip()
Enddo

For i:= 1 to len(a_total)
@ Linha,00 Say a_total[i,1]
@ Linha,05 Say a_total[i,2]
@ linha,35 Say a_total[i,3]
Linha++
Next

Eject
Set Device to Screen
Set Printer to
Exit
Enddo
Set Softseek Off
Close All
Selecionar Dispositivo de impressao.
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Set Printer to Lpt.txt
Set Device To Print

While EMISSA_SAI >= dDt1 .and. EMISSA_SAI <= dDt2 .and. !Eof()
a1:= ascan(a_total,{|x| x[1] = Mov_sai->CODMEI_SAI})
If a1 = 0
aadd(a_total, {Mov_sai->CODMEI_SAI, Mov_sai->DESMEI_SAI, 0})
a1:= len(a_total)
End
a_total[a1,3] += Mov_sai->VLNOTA_SAI
Dbskip()
End

linha := 1
@ Linha+1,70 Say Padl(Date(),10)
@ Linha+2,10 Say Padc("Resumo Financeiro no Periodo de "+DTOC(dDt1)+" a "+DTOC(dDt2),60)
@ Linha+2,70 Say Padl(Time(),10)
@ Linha+3,00 Say "CX004"
@ Linha+3,72 Say "P g:"
@ Linha+3,77 Say Padl(Pag,3)
@ Linha+4,00 Say Repl("=",80)

For i:= 1 to len(a_total)
@ Linha,00 Say a_total[i,1]
@ Linha,05 Say a_total[i,2]
@ linha,35 Say a_total[i,3]
Linha++
Next

Eject
Set Device to Screen
Set Printer to
"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}
Responder