ajuda com arrays

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

jcsprog
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 27 Abr 2005 12:04
Localização: sao paulo - jd.brasil

ajuda com arrays

Mensagem por jcsprog »

:-´ preciso criar uma array para gravar valores p/ fazer uma media ponderada de um produto

preciso gravar = cod_pro , qte_pro , valor_pro = quando o valor de compra for diferente para depois fazer um
calculo
exemplo:= produto qte valor
507 5 12,50
507 10 13.45
507 13 14,00

510 10 15,00
510 5 12,00
510 7 10,00

como fazer com array p depois pegar os campos e calcular
agradeço a ajuda
pois so consegui gravar assim = produto:={}
do while fam->(!eof())
aadd(produto,fam->cod_pro)
fam->(dskip())
enddo
ai eu tenho todos os produtos + e os valores
agradeco a ajuda ou alguma explicação de como trabalhar com arrays = pois vou ter que verificar o
campo de valor p/ não gravar iqual sei que é com ASCAN() + NAO SEI AS POSICOES

AGRADEÇO DESDE DE JA
jcsprog
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: ajuda com arrays

Mensagem por alxsts »

Olá!

Caro jcsprog:

pelo que entendi, você precisa carregar em um vetor (array) alguns campos provenientes do arquivo com o alias FAM, desde que o campo VALOR seja único para cada produto. Assim, ao final do processamento do arquivo, você terá uma array de arrays. Cada linha representará um produto e será uma array com as colunas referentes ao produto, como se fosse um .DBF.

Código: Selecionar todos

#define   AP_COD_PRO   1
#define   AP_QTE_PRO   2
#define   AP_VALOR_PRO 3    

//------------------------------------------------------------------------------
PROCEDURE CargaProdutos()

   LOCAL aProdutos
   
   // abrir o arquivo
   USE Arquivo SHARED NEW ALIAS FAM
   
   FAM->( DBGoTop() )

   aProdutos := {}
      
   WHILE FAM->( ! Eof() )

      // procura no array aProdutos se existe o valor do produto para aquele produto  
      IF AScan( aProdutos, { |e| ( e[ AP_COD_PRO ]   == FAM->cod_pro .AND. ;
                                     e[ AP_VALOR_PRO ] == FAM->valor_pro ) } ) == 0 
         // se não existir, adiciona ao array aProdutos um outro array com os dados do novo produto
         AAdd( aProdutos, ;
                     { ;
                       FAM->cod_pro,  ;
                       FAM->qte_pro,  ;
                       FAM->valor_pro ;
                     } ;
             )        
      ENDIF
      
      FAM->( DbSkip() )

   ENDDO    

   RETURN 
//------------------------------------------------------------------------------
Não se esqueça que em Clipper, uma array pode conter até 4096 elementos por dimensão.
[]´s
Alexandre Santos (AlxSts)
Responder