Ajuda com Matrizes
Moderador: Moderadores
Ajuda com Matrizes
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.
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.!!"
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
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 :?)
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
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.
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.!!"
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.
[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}
{POG - Programação Orientada a Gambiarra}
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
[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}
{POG - Programação Orientada a Gambiarra}
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.
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.!!"
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
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}
{POG - Programação Orientada a Gambiarra}

