FoxPro/Visual FoxPro - Ordenar numericamente un campo texto

 
Vista:

Ordenar numericamente un campo texto

Publicado por Edgar dvd (135 intervenciones) el 05/11/2007 20:17:51
amigos
tengo un campo indice tipo texto 10, pero en este almaceno clave y como deseo que me vaya generando el sig automaticamente neceisto ordenarlo la tabla mediante ese campo pero como es texto no lohace correctamente

lo ordena asi:

1
10
11
12
....del 13 asta el 19
2
20
21
22
...23-29
3
30
31
32
....33-39
4
5
6
7
8
9

hay algua forma de ordenarlo correctamente?? en forma ascendente? ya que necesito ordenarla tabla ascendente para agarrar el ultimo y sumarle un para agarrar el sisguiente
agradcido de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Ordenar numericamente un campo texto

Publicado por Carlos Cuyé (75 intervenciones) el 05/11/2007 20:47:47
Usá PADL(TuClave,Longitud,'0')
Con esto agregás ceros a la izquierda hasta completar la longitud de tu clave para que se pueda ordenar numericamente.

PADL( ) | PADR( ) | PADC( ) (Funciones)

Devuelve la expresión específica rellenándola por la izquierda, la derecha, o por ambos lados.

Sintaxis

PADL(eExpresión, nTamañoResultado [, cCarácterRelleno])
– O bien –
PADR(eExpresión, nTamañoResultado [, cCarácterRelleno])
– O bien –
PADC(eExpresión, nTamañoResultado [, cCarácterRelleno])

Tipos devueltos

Character

Argumentos

eExpresión Incluye la expresión que se va a rellenar. Puede ser una expresión de cualquier tipo, excepto una expresión lógica o un campo general o de imagen.

nTamañoResultado Especifica el número total de caracteres que tendrá la expresión después de rellenarla.

cCarácterRelleno Especifica el valor que se va a utilizar para el relleno. Este valor se repite todas las veces necesarias para rellenar la expresión con el número especificado de caracteres.

Si se omite cCarácterRelleno, se utilizan espacios (ASC(32)) para el relleno.

Comentarios

PADL( ) inserta los caracteres de relleno a la izquierda, PADR( ) inserta el relleno a la derecha, y PADC( ) lo inserta en ambos lados.

Ejemplo de PADL( ) | PADR( ) | PADC( ) (Funciones)

STORE 'TITLE' TO gcCadena
CLEAR
? PADL(gcCadena, 40, '=')
? PADR(gcCadena, 40, '=')
? PADC(gcCadena, 40, '=')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ordenar numericamente un campo texto

Publicado por Mauro (1 intervención) el 22/10/2011 19:26:31
La pregunta es vieja, lo se, pero.....
usa la funcion VAL() que sirve para transformar una cadena a numeros.

Ejemplo:

USE miTabla
INDEX ON VAL(miNombreColumna) TO loQueDesee


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ordenar numericamente un campo texto

Publicado por Juan Galvan (2 intervenciones) el 25/10/2011 18:42:30
Como se podria ordenar un campo texto si inicia con "MAR"

este ejemplo es el problema que tengo:


MAR100001
MAR100001
MAR99126
MAR99127
MAR99128
MAR99128A
MAR99128B

Trate de hacerlo de esta manera pero no lo hace correctamente :

index on VAL(SUBSTR(ALLTRIM(jtra),4)) tag xtrafico && ADDITIVE

solo para agarrar los numeros pero me topo que hay letras al final.

alguna idea?
Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ordenar numericamente un campo texto

Publicado por Juan Manuel Cruzº (512 intervenciones) el 31/10/2011 11:29:53
Típico de un mal diseño de BD.

Ya que se deduce que hay tres componentes del campo 'clave': prefijo, base y sufijo (ej: MAR, 99128, B) la tabla debería haber sido construida así, tres campos físicos y una 'llave' virtual construida a partir de ellos, y no al revés.

En el caso que comentas, Juan, tendrás que crear una muy complicada función de una sola línea para poder manejar tu campo, o una UDF que siempre esté disponible para cualquier programa VFP que maneje dicho índice.

O corregir esa tabla.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar