:-´ 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
ajuda com arrays
Moderador: Moderadores
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: ajuda com arrays
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.
Não se esqueça que em Clipper, uma array pode conter até 4096 elementos por dimensão.
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
//------------------------------------------------------------------------------[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
