Me he encontrado un proyecto en el que el campo índice es un número en formato hexadecimal y los listados, gráficos, etc deben salir ordenados por ese campo.
Imaginemos la siguiente tabla:
LOAD * INLINE [
Campo_Indice
AA
2C
11
20
A3
1A
];
Si intentamos solucionarlo marcando sólo la opción “TEXTO”
en las opciones de ordenación del objeto, la cosa no mejora mucho más:
Una solución rápida consiste en ordenarlo convirtiendo el campo a nº hexadecimal :
Pero como se puede observar siguen apareciendo alineados a
la izquierda o derecha porque el campo sigue teniendo valores con formato texto
y número. No hemos transformado el campo en la carga, sino solo para ordenarlo.
De hecho, lo que ocurre durante la ordenación es que transforma los valores del
campo a formato numérico decimal y luego los ordena.
Podríamos tener la tentación de utiliar esta fórmula para hacer la transformación directamente en el script de carga. No es aconsejable a menos que este campo no necesite para representarse en ningún objeto de la aplicación, porque el resultado sería el siguiente:
|
Observamos también que si
tuviéramos los números de la última lista (pero desordenados) y los quisiéramos
convertir a Hexadecimal, bastaría con utilizar esta expresión en el
script:
|
Obsérvese cómo en este caso todos aparecen por defecto
perfectamente ordenados y alineados a la derecha, lo que indica que realmente
son números. En este caso el ‘HEX’ se aplica a la visualización (función num)
no a la conversión (función num#).
Por tanto, aplicando todo lo anterior, la mejor forma de
hacerlo sería con una doble conversión en el script de carga: de hexadecimal a
decimal y nuevamente a hexadecimal.
|
No hay comentarios:
Publicar un comentario