Page 1 of 1

Consulta sobre Index

Posted: Fri Dec 09, 2005 7:49 pm
by Armando
Amigos del foro:

Nuevamente acudo a ustedes pues no encuentro la respuesta.

En los MainFrame como AS/400 al ordenar por un campo
alfanumerico quedan de la siguiente forma:

2A261
2F5010
244910
246110

Peroooooo en FW los mismos artículos al crear un índice quedan así

244910
246110
2A261
2F5010

En el primer caso las letras de la segunda columna van antes
que los dígitos pero en FW el caso es al reves, los dígitos van antes que las letras.

Existe alguna función para que el índice me quede exactamente
igual que el MainFrame ??

Saludos

Posted: Fri Dec 09, 2005 8:26 pm
by jlcapel
Armando,

Por lo que veo, están en orden descendiente. Añade DESCEND( clave ) en tu índice.

Saludos,
José Luis Capel
www.capelblog.com

Posted: Sat Dec 10, 2005 4:06 pm
by Armando
José Luis:

Te agrdezco infinitamente el consejo pero, si miras nuevamente
veras que no, no estan en orden decreciente.

244910
246110
2A261
2F5010

Sin embargo he probado según tu consejo y tampoco funciona.

Un abrazo, Armando

Posted: Sat Dec 10, 2005 4:51 pm
by jlcapel
Armando,


Ups... cierto.. me fijé en la columna de abajo en vez de la de arriba.



Saludos,
José Luis Capel

Posted: Sat Dec 10, 2005 5:28 pm
by fgondi
Hola,

Que yo sepa no existe ninguna forma, pero por una razón lógica, FW lo esta acciendo correctamente. Es en los Mainframe donde el orden es incorrecto.

Al ordenar un campo alfanumérico el orden tiene que ir de izquierda a derecha según su código ascii, por eso lo ordena de esa forma:
24...
24...
2A..
2F...

Lo considero que no debe hacer es o bien tener en cuenta las longitudes de las cadenas, o bien ordenar antes letras que números

Puedes grabarlos justificandolos a la derecha, pero quedara:

Code: Select all

 2A261 
244910 
246110 
2F5010

Posted: Mon Dec 12, 2005 2:50 pm
by pymsoft
Armando: prueba a hacer el indice en este modo:
INDEX ON PADL( ALLTRIM( tucampo ), 6) TO tu_indice......

Seguramente lo ordena en el modo que quieres.

2A261
2F5010
244910
246110