Foros del Web » Programando para Internet » ASP Clásico »

ordenar registros en pantalla

Estas en el tema de ordenar registros en pantalla en el foro de ASP Clásico en Foros del Web. Hola Veran Tengo en mi DB un Campo TEXTO en el que guardo numeros del 1 al 20 y cuando los saco en pantalla sql= ...
  #1 (permalink)  
Antiguo 14/12/2004, 06:56
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
ordenar registros en pantalla

Hola

Veran Tengo en mi DB un Campo TEXTO en el que guardo numeros del 1 al 20 y cuando los saco en pantalla

sql= "SELECT distinct numeros from tabla"

se ordenan de la siguiente forma

1
11
12
13
2
3
4
5

necesito que se ordenen correctamente, ¿alguna idea? ¿y q no sea pasar el campo a numerico?

gracias
  #2 (permalink)  
Antiguo 14/12/2004, 07:44
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
hacelo asi:
sql= "SELECT distinct numeros FROM tabla ORDER BY numeros ASC"

usas ASC para ordenarlo de forma ascendente y DESC para descendiente. espero sea lo qeu buscas
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #3 (permalink)  
Antiguo 14/12/2004, 08:43
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
gracias lexus

pero no

El problema es que el campo de la db es texto, y cuando le das a ordenar te lo ordena como ya comente antes, por oden alfabetico.

alguna recomendacion??
  #4 (permalink)  
Antiguo 14/12/2004, 09:08
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Si es TEXT, debes hacer un doble cast:
Código:
SELECT  numeros
FROM     tabla
ORDER BY CAST(CAST(numeros AS nvarchar) AS INT)
Saludos
  #5 (permalink)  
Antiguo 14/12/2004, 09:18
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
mmmmmm, si la cosa es en Access, el asunto es más fácil:

SELECT *
FROM texto order by CLng (txtnumero)

o

SELECT *
FROM texto order by CInt(txtnumero)
  #6 (permalink)  
Antiguo 14/12/2004, 09:54
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Myakire

Si es en access y me da un error

1º me dice con:
SELECT distinct numeros from tabla1 order by CLng (txtnumeros)
[Microsoft][Controlador ODBC Microsoft Access] La cláusula ORDER BY (CLng(txtnumeros)) está en conflicto con DISTINCT.

y luego cuando por probar le quito el distinct me sale:
SELECT numeros from tabla1 order by CLng (txtnumeros)
2º me dice que
[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.

:(

ayudame... gracias
  #7 (permalink)  
Antiguo 14/12/2004, 10:12
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 19 años, 5 meses
Puntos: 0
a la instruccion
SELECT numeros from tabla1 order by CLng (txtnumeros)

sacale el txt

SELECT numeros from tabla1 order by CLng (numeros)
  #8 (permalink)  
Antiguo 14/12/2004, 10:15
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
hola flacoluis

me da el error

[Microsoft][Controlador ODBC Microsoft Access] No coinciden los tipos de datos en la expresión de criterios.

q podra ser?
  #9 (permalink)  
Antiguo 14/12/2004, 10:21
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 19 años, 5 meses
Puntos: 0
a ver con:
SELECT numeros from tabla1 order by Cint (numeros)
  #10 (permalink)  
Antiguo 14/12/2004, 10:32
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
el error es el mismo, hace exactmante lo mismo

si uso distinct dice que esta en conflicto y si no lo uso no coinciden los tipos :(

gracias por tu ayuda..
  #11 (permalink)  
Antiguo 14/12/2004, 10:57
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 19 años, 5 meses
Puntos: 0
que pasa si el cint se lo pones asi?
SELECT cint(numeros) from tabla
  #12 (permalink)  
Antiguo 14/12/2004, 14:31
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Vamos, es cosa de ser algo lógico, si una función de casting truena, es por que no se ha podido realizar la conversión, Seguramente un registro en esa tabla, no tiene un valor que pueda ser pasado a número (como una letra, un espacio o un nulo).

Existe una función en SQL Server ISNULL para esos casos, habrá que buscar un equivalente en Access o ingeniarselas con subconsultas.

Saludos
  #13 (permalink)  
Antiguo 14/12/2004, 15:00
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
Algo como esto utilizando arreglos, no lo he probado y le hice unas adecuaciones je je je, por lo cual seguramente tendrá algun error, pero ahí está la idea.

Código:
'Función para ordenar un arreglo, método de la burbuja
Function OrdenaArreglo(arreglo)
	If isArray(arreglo) Then
		Dim temp
		For i = 0 to uBound(arreglo)
			For j = i + 1 to uBound(arreglo)		
				If arreglo(i) > arreglo(j) Then
					temp = arreglo(i)
					arreglo(i) = arreglo(j)
					arreglo(j) = temp
				End If
			Next
		Next
	Else
		OrdenaArreglo = Null
	End If
	OrdenaArreglo = arreglo
End Function




Set rs = Server.createObject....bla bla
strSQL = "Select numeros FROM tabla1"
rs.Open strSQL, ObjConn, 3, 3

temp = ""
While Not rs.EOF
  If not IsNull(rs("numeros")) Then
    temp = temp & ","
  End If
  rs.MoveNext
Wend

If temp <> "" Then
  temp = left(temp, len(temp) - 1)
  arrTemp = split(temp, ",")
  Dim intArrTemp()
  For i = 0 to uBound(arrTemp)
     intArrTemp(i) = Cint(arrTemp(i))
  Next
  MiArreglo = OrdenaArreglo(intArrTemp)
  If Not IsNull(MiArreglo)
     'Lo muestras
  End If
End If
Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:44.