Jump to content
Fivewin Brasil

dificuldades com ASORT em tabela


Yury

Recommended Posts

olá pessoal,

imaginem uma tabela multidimensional com os seguintes dados:


aTabela:={ { 2100, 10, 2 },;

{ 1200, 10, 2 },;

{ 1200, 10, 3 },;

{ 1200, 20, 1 },;

{ 1200, 30, 1 },;

{ 1200, 40, 1 },;

{ 3350, 20, 2 },;

{ 2100, 20, 1 },;

{ 2100, 30, 1 },;

{ 2100, 10, 1 },;

{ 3350, 20, 1 } }

id=code>id=code>

gostaria de fazer um ASORT em ordem crescente pelo 1º elemento e decrescente pelo 2º e 3º elementos, para que ela fique assim:


aTabela:={ { 1200, 40, 1 },;

{ 1200, 30, 1 },;

{ 1200, 20, 1 },;

{ 1200, 10, 3 },;

{ 1200, 10, 2 },;

{ 2100, 30, 1 },;

{ 2100, 20, 1 },;

{ 2100, 10, 2 },;

{ 2100, 10, 1 },;

{ 3350, 20, 2 },;

{ 3350, 20, 1 } }

id=code>id=code>

tentei da forma abaixo mas não ordenou...


ASORT(aTabela,,,{|a,b| a[1] < b[1].and.;

a[2] > b[2].and.;

a[3] > b[3] })

id=code>id=code>

será q é possível ?

obrigado e um abraço

Yury Marcelino Al

Viman Sistemas

vimansca@vimansca.com.br

yury030575@yahoo.com.br (msn)

skype: yury.marcelino.al

Leme / SP

FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say

Link to comment
Share on other sites

olá pessoal,

imaginem uma tabela multidimensional com os seguintes dados:


aTabela:={ { 2100, 10, 2 },;

{ 1200, 10, 2 },;

{ 1200, 10, 3 },;

{ 1200, 20, 1 },;

{ 1200, 30, 1 },;

{ 1200, 40, 1 },;

{ 3350, 20, 2 },;

{ 2100, 20, 1 },;

{ 2100, 30, 1 },;

{ 2100, 10, 1 },;

{ 3350, 20, 1 } }

id=code>id=code>

gostaria de fazer um ASORT em ordem crescente pelo 1º elemento e decrescente pelo 2º e 3º elementos, para que ela fique assim:


aTabela:={ { 1200, 40, 1 },;

{ 1200, 30, 1 },;

{ 1200, 20, 1 },;

{ 1200, 10, 3 },;

{ 1200, 10, 2 },;

{ 2100, 30, 1 },;

{ 2100, 20, 1 },;

{ 2100, 10, 2 },;

{ 2100, 10, 1 },;

{ 3350, 20, 2 },;

{ 3350, 20, 1 } }

id=code>id=code>

tentei da forma abaixo mas não ordenou...


ASORT(aTabela,,,{|a,b| a[1] < b[1].and.;

a[2] > b[2].and.;

a[3] > b[3] })

id=code>id=code>

será q é possível ?

obrigado e um abraço

Yury Marcelino Al

Viman Sistemas

vimansca@vimansca.com.br

yury030575@yahoo.com.br (msn)

skype: yury.marcelino.al

Leme / SP

FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say

Link to comment
Share on other sites

olá Geraldo, obrigado pela resposta...

mas assim não dá certo, pois preciso de ordenação em dois sentidos, crescente e decrescente...

desta forma q vc passou funcionaria se a ordenação de todos os elementos fossem no mesmo sentido...

obrigado e um abraço

Yury Marcelino Al

Viman Sistemas

vimansca@vimansca.com.br

yury030575@yahoo.com.br (msn)

skype: yury.marcelino.al

Leme / SP

FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say

Link to comment
Share on other sites

Yury, as vezes a resposta está tão perto de você que você nem percebe - ah ah ah!

Veja: uma maneira simples de resolver isto:

na gravação do 2º e 3º elemento, faça com que eles fiquem com sinal invertido, ou seja negativo, multiplique por -1 e utilize a função aSort sem se preocupar com ordem crescente ou descendente; espero ter ajudado.

José Ap.R.M.Oliveira

Viman Sistemas

vimansca@vimansca.com.br

Leme / SP

FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say

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...