FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ASort por dos columnas
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
ASort por dos columnas
Posted: Mon May 02, 2022 01:14 AM

Hola a todos,
Necesito ordenar un array por dos columnas, pero en el orden necesito que ordene por la primera columna de manera ascendente y por la segunda de manera descente.
La primera columna es una cadena y la segunda un numero.
Alguien tiene una idea de como debo hacer para que ASort haga lo que necesito?
Desde ya muchas gracias.
Saludos,

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: ASort por dos columnas
Posted: Mon May 02, 2022 03:28 AM

Esteban,

ASort( aArray,,, {| x, y | x[ 1 ] < y[ 1 ] .and. x[ 2 ] > y[ 2 ] } )

  1. tu primer orden alfa
  2. tu segundo orden numerico

no lo probe pero deberia funcionar.

Saludos.

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: ASort por dos columnas
Posted: Mon May 02, 2022 11:25 AM

Buen día Ariel...
No funciona de ese modo.

Alguna otra sugerencia?

Desde ya muchas gracias.
Saludos,

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: ASort por dos columnas
Posted: Mon May 02, 2022 12:48 PM

y esta forma

ASort( aDatos,,, {| x, y | If( x[ 1 ] == y[ 1 ], x[ 2 ] < y[ 2 ] ) } )

saludos

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: ASort por dos columnas
Posted: Mon May 02, 2022 02:14 PM
jbrita wrote:
ASort( aDatos,,, {| x, y | If( x[ 1 ] == y[ 1 ], x[ 2 ] < y[ 2 ] ) } )


Esta manera me ordena ambas columnas de manera descendente.
Yo necesito la primera columna ascendente y la segunda descendente.
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: ASort por dos columnas
Posted: Mon May 02, 2022 05:07 PM

Finalmente me fucionó lo siguiente:

aDatos:=ASort( aDatos,,, {| x, y | If( x[ 1 ] == y[ 1 ], x[ 2 ] > y[ 2 ] , x[ 1 ] < y[ 1 ] ) } )

Muchas gracias por las respuestas.

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda

Continue the discussion