Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2008
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
duda acerca de índices

Buenas tardes a todos. Me surge la siguiente cuestión:

una tabla con ADO, con una serie de campos.....entonces utilizo un índice para ordenar uno de ellos(de forma ascendente), en concreto es un campo de tipo alfanumérico...

que ocurre??? si tengo los siguiente valores, así se quedan después de ordenarlos:

169/08
17/08
170/08
199/08
2/08
20/08

y debería ser este otro(por lo menos es lo que busco):

2/08
17/08
20/08
169/08
170/08
199/08

sabe alguien por que puede suceder y como solucionarlo??? muchas gracias...
Responder Con Cita
  #2  
Antiguo 29-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por joanajj Ver Mensaje
sabe alguien por que puede suceder y como solucionarlo???
Bueno, en realidad no está pasando nada raro. Te lo está ordenando correctamente. Como tú has dicho el campo es ALFANUMERICO, por lo tanto
2/08 no es menor que 17/08 puesto que el no lo ve como números, tú sí.

La solución más fácil que se me ocurre es que utilices ceros (0) a la izquierda; De esta forma quedará así:

002/08
017/08
020/08
169/08
170/08
199/08

Y en ese caso sí te los ordenaría como tú esperas.
El número de ceros que debes añadir a la izquierda dependerá del mayor valor qeu estés almacenando
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 29-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Otra opción (creo más complicada) pasa por crear campos separados para los dos valores que estás almacenendo y olvidarte del separador "/"; Para luego cuando los muestres, unirlo y "ofrecerlos" como uno sólo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 29-07-2008
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
Gracias por la respuesta

Gracias por la respuesta, creo que optaré por la de colocar 0 delante, creo que es la solución más cómoda y fácil...

pero si que tengo una duda, y si no es mucho pedir me gustaría me aclararas...

por que 02/08 no es menor que 17/08....digo yo que /08 vale igual en ambos casos, pero 02 es menor que 17, salvo que sus valores ascII digan lo contrario...

saludos y gracias de antemano...
Responder Con Cita
  #5  
Antiguo 29-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por joanajj Ver Mensaje
por que 02/08 no es menor que 17/08....digo yo que /08 vale igual en ambos casos
Yo no creo haber dicho tal cosa...

Cita:
Empezado por Neftali Ver Mensaje
...por lo tanto
2/08 no es menor que 17/08 puesto que el no lo ve como números, tú sí.
Desde el punto de vista "alfanumérico"he dicho que:

2/08 no es menor que 17/08
02/08 sí es menor que 17/08
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 29-07-2008
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
a eso me refiero!!!

Neftalí, a eso me refiero, desde el punto de vista alfanumerico, ¿porque 02/08 si es menor que 17/08, y por el contrario 2/08 no es menor que 17/08?, esa es la duda que tengo(es curiosidad)...

Gracias...
Responder Con Cita
  #7  
Antiguo 30-07-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por joanajj Ver Mensaje
Neftalí, a eso me refiero, desde el punto de vista alfanumerico, ¿porque 02/08 si es menor que 17/08, y por el contrario 2/08 no es menor que 17/08?, esa es la duda que tengo(es curiosidad)...
Hola joanajj

02/08 es menor que 17/08 -> porque el 0 es menor que el 1
2/08 no es menor que 17/08 -> porque el 2 es mayor que el 1

Es así porque es alfanumerico.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 30-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por joanajj Ver Mensaje
desde el punto de vista alfanumerico, ¿porque 02/08 si es menor que 17/08, y por el contrario 2/08 no es menor que 17/08?
Bueno, creo que Caro lo ha explicado perfectamente. Al tomarlo como alfanumérico debes ir comparando los caracteres empezando por la izquierda como lo harías con los nombre o apellidos.

P A Q U I T A
P E P A
P E P E
P E P O T E


Si con nombres lo ves claro, deberias verlo también con estos:

02/08
17/08
2/08

Separa los caracteres, compara y verás...

0 2 / 0 8
1 7 / 0 8
2 / 0 8


El primer caracter ya te está dando el orden.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 30-07-2008
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
Aclarado

Muchas gracias, ahora si me ha quedado claro tanto con la explicación de Caro como Neftalí. Creo que el problema me viene, tal como comentó Neftalí en su primera respuesta, y es el haber visto la cifra como números y no haberla visto como lo que son , alfanuméricos y es que ciertamente la cosa cambia, tal como me demostráis.

Un saludo y gracias de nuevo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Acerca de una duda que me corroe dec La Taberna 51 18-01-2008 19:37:12
Duda acerca de paradox en red sapi Tablas planas 1 20-10-2006 17:32:04
Duda acerca de Emule 0.47 vick Varios 2 25-07-2006 11:36:30
Duda acerca SQL joanajj SQL 1 16-07-2006 01:11:30
Duda acerca de ShellExecute Chupi OOP 12 23-12-2004 15:55:40


La franja horaria es GMT +2. Ahora son las 01:47:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi