Jump to content
Fivewin Brasil

DUVIDA ARRAY- RESOLVIDO


gss200610

Recommended Posts

OLA A TODOS, VEJAM SE ENTENDEM O QUE TO PRECISANDO FAZER.

array venda

01/01/2011, 000600, teste

02/01/2011, 000601, teste

02/01/2011, 000602, teste

02/01/2011, 000603, teste

array item

01/01/2011, 000602, produto teste

01/01/2011, 000601, produto teste

01/01/2011, 000603, produto teste

01/01/2011, 000600, produto teste

preciso tipo varrer o array venda

e listar os itens equivalentes do array item

tipo

for i:= to len(venda)

n:=ascan(item, {|x| x[1] == venda[i,1] .AND. x[2]==venda[i,2] })

if n > 0

aqui listar todos os itens,como:

for npos := 1 to len( aqui preciso pegar apenas os do

next

ascan

endif

next

preciso sempre varrer o array venda e tipo fazer um seek do item nele e listar todos os itens da respectiva venda.

lenbrando que os dois sao arrays e uso DBF.

Gilmar Silva Santos

Programador - Goiânia Go

Não Recuarei, Nada Temerei, Comigo Está o Senhor.

Email : gilmarss2010@gmail.com

FWH 10.8, DBF, MED EDITOR, UESTUDIO, XHB 1.2, BCC 5.82

Editado por - gss200610 on 17/02/2012 07:09:03

Editado por - gss200610 on 17/02/2012 07:09:34

Link to comment
Share on other sites

OLA A TODOS, VEJAM SE ENTENDEM O QUE TO PRECISANDO FAZER.

array venda

01/01/2011, 000600, teste

02/01/2011, 000601, teste

02/01/2011, 000602, teste

02/01/2011, 000603, teste

array item

01/01/2011, 000602, produto teste

01/01/2011, 000601, produto teste

01/01/2011, 000603, produto teste

01/01/2011, 000600, produto teste

preciso tipo varrer o array venda

e listar os itens equivalentes do array item

tipo

for i:= to len(venda)

n:=ascan(item, {|x| x[1] == venda[i,1] .AND. x[2]==venda[i,2] })

if n > 0

aqui listar todos os itens,como:

for npos := 1 to len( aqui preciso pegar apenas os do

next

ascan

endif

next

preciso sempre varrer o array venda e tipo fazer um seek do item nele e listar todos os itens da respectiva venda.

lenbrando que os dois sao arrays e uso DBF.

Gilmar Silva Santos

Programador - Goiânia Go

Não Recuarei, Nada Temerei, Comigo Está o Senhor.

Email : gilmarss2010@gmail.com

FWH 10.8, DBF, MED EDITOR, UESTUDIO, XHB 1.2, BCC 5.82

Editado por - gss200610 on 17/02/2012 07:09:03

Editado por - gss200610 on 17/02/2012 07:09:34

Link to comment
Share on other sites

Se tudo der certo, isso resolverá seu problema:


"02/01/2011", 000601, "teste" } ,;

"02/01/2011", 000602, "teste" } ,;

"02/01/2011", 000603, "teste" } }

aItens:= {"01/01/2011", 000602, "produto teste" } ,;

"01/01/2011", 000601, "produto teste" } ,;

"01/01/2011", 000603, "produto teste" } ,;

"01/01/2011", 000600, "produto teste" } }

FOR i = 1 TO LEN(aVenda)

nPos:= 0

WHILE (nPos:= ASCAN(aItens,{|X|X[1]==aVenda[i,01] .AND. X[2]==aVenda[i,02]},nPos) > 0)

? aItens[nPos,03]

ENDDO

NEXT

id=code>id=code>

*Correção

Luis Fernando Jr. (Luisão)

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

luis.fernando.majr@gmail.com

juninho_luisao@hotmail.com (msn)

Editado por - Luisão on 15/02/2012 13:41:21

Link to comment
Share on other sites

conforme ja havia lhe passado pelo MSN.

Segue como deve proceder


Nesse exemplo vou mostrar 2 notas fazendo a adição manual.


vNotas := {}

vItens := {}

//Nota 1

// Num,filial, cliente, valor

id=green>

aadd(vNotas, {"000001", 1, 20, 110.20 })

// Num ,filial, cliente, valorIte, Codigoid=green>

aadd(vItens, {"000001", 1, 20, 100.00 , 123 })

aadd(vItens, {"000001", 1, 20, 10.20 , 125 })

Nota 2 id=green>

aadd(vNotas, {"000002", 1, 22, 50.00 })

// Num ,filial, cliente, valorIte, Codigoid=green>

aadd(vItens, {"000002", 1, 22, 20.00 , 975 })

aadd(vItens, {"000002", 1, 22, 30.00 , 984 })

id=code>id=code>

apos a montagem dos arrays vem voce faz os for's


//faz o asort para garantir a ordenação do arrayid=green>

asort{vNotas,,,{|x| x[1] + str(x[2] + str(x[3]) > y[1] + str(y[2]) + str(y[3]))}}

asort{vItens,,,{|x| x[1] + str(x[2] + str(x[3]) > y[1] + str(y[2]) + str(y[3]))}}

for i := 1 to len(vNotas)

// faz o ascan para garantir que o primeiro item seja encontradoid=green>

nPosItens := ascan(vItens, {|x| x[1] + str(x[2] + str(x[3]) > vNotas[i, 1] + str(vNotas[i, 2]) + str(vNotas[i, 3]))})

if nPosItens > 0

for j := nPosItens to len(vItens)

// verifica se o item é diferente, se verdadeiro sai do for de itens e pula para proxima notaid=green>

if vItens[j, 1] + str(vItens[j, 2]) + str(vItens[j, 3]) <> vNotas[i, 1] + str(vNotas[i, 2]) + str(vNotas[i, 3])

exit

endif

// aqui voce usa os dados do vItensid=green>

next

endif

//aqui voce usa os dados do vNotasid=green>

next

id=code>id=code>

id=code>id=code>

Marcelo Michels

E-mail:marcelo@folksistemas.com.br

Msn/E-mail:celo.michels@hotmail.com

xHarbour 1.2 + Fwh 106(originalid=red>) + Bcc 5.82 + SQLRDD + Mate.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...