FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
¿Como ordenar bien los codigos?
Mi problema es el siguiente, utilizo Interbase, y quiero ordenar bien por código. 1,2,3,...,10,11,...99,100
Pero me pasa lo siguiente me lo ordena así 1,10,100,11,2,3,... Si para los diez primeros utilizo 01,02,03,..09 me ordena bien hasta el 100, pero a partir de ahí me falla. Y si quiero que sea el código autoincrementable me falla, ya que despúes del 99, siempre me genera el 100 Lo hago con una consulta tipo 'Select Max(CODIGO) from TABLA' e incremento en uno el resultado |
#2
|
||||
|
||||
Ese problema que citas no será debido a que el campo es alfanumérico en lugar de ser numérico? Porqué es lo que parece...
|
#3
|
|||
|
|||
Me imagino que si, ya que puede agregarle el 0 a la izquierda y guardar el valor...
Saludos... |
#4
|
|||
|
|||
Pues el asunto es que si, que es alfanumerico.
Pero entonces, puedo solucionarlo, o no? |
#5
|
|||
|
|||
¿Puedo cambiar el tipo de campo para que sea numerico?
|
#6
|
|||
|
|||
Como poder cambiar lo puedes cambiar. La forma que yo conozco es eliminar el campo y volverlo a crear de nuevo indicando que es numerico, pero si ya tiene datos la tabla pues la cosa se complica y mas si ademas es clave o forma parte de ella.
Puedes crearte un nuevo campo de tipo numerico, te creas un programita que pase los datos del campo alfanumerico al nuevo campo. Una vez echo esto modifica las claves si las tienes y lo enlazas con el nuevo campo y eliminas el alfanumerico. Creo que es una solución un tanto chapuza, pero en este momento no se me ocurre otra, espero que te pueda ayudar. suerte |
#7
|
|||
|
|||
Tambien puedes cambiarlo accediendo a las tablas de sistema
Código:
UPDATE RDB$RELATION_FIELDS SET RDB$FIELD_SOURCE="Tipo_Campo" WHERE RDB$FIELD_NAME="Nombre_Campo" AND RDB$RELATION_NAME="Nombre_Tabla"; |
#8
|
||||
|
||||
Hola.
También puedes probar a hacer simplemente un casting de tipo (no creo que esta expresión sea muy correcta). Es una chapuzilla, porqué no se podrá usar ningún índice para optimizar el resultado, y si hay algún valor que no sea numérico va a cascar, pero para salir del paso .... 'Select Max(cast(CODIGO as integer)) from TABLA' Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#9
|
|||
|
|||
Gracias a todos por vuestras respuestas.
EL tipo de campo lo consigo cambiar con el IBExpert, sin tener que eliminar el campo, ni borrar datos ni nada de nada. He creado el campo como integer, y me pasa lo siguiente. Si creo en una tabla registros del 1 al 99, lo hace bien, pero al crear el numero 100, en mi formulario no me muestra los 99 anteriores, solo me muestra los del 101 al 999, del pasa de este al 1000 pasa lo mismo. Sin embargo si elimino el registro 100 me vuelve a mostrar bien del 1 al 99. Que hago utilizo lo del Select Cast, o si quiero que sea númerico, porque pasa lo anterior? |
#10
|
|||
|
|||
De echo, el IBExpert lo que ha hecho internamente es lo que yo te habia comentado
Respecto a tu nuevo problema, la verdad es que no te he entendido mu bieng Podrias mirar de explicarte algo mejor? |
#11
|
|||
|
|||
Me explico:
Digamos que tengo una tabla cuya clave principal es CODIGO. Vale pues el problema es cuando pasa del registro 99 al 100, o del 999 al 1000. Si tengo ya creados 99 registros: numerados del 1 al 99, y creo el registro 100. Pues en mi formulario solo me muestra el 100, (y los sucesivos hasta el 999) pero no los 99 primeros, parece que se hayan volatilizado. ES decir después de crear el 100, hago un Tabla.Prior y me muestra el 100, hago un Tabla.Next y me muestra el 100, lo mismo con el First y el Last. Es decir que parece que solo tenga el registro 100. Pero si elimino este ( y todos los comprendidos entre el 100 y el 999) ya puedo acceder a todos los demás del 1 al 99 claro esta. |
#12
|
|||
|
|||
Saludos, nunca lo he intentado con campos de diferentes naturaleza, pero ya que en el campo codigo no existe ningun caracter alfabetico deberia de funcionar lo siguiente:
ALTER TABLE NOMBRE_TABLA ALTER COLUMN NOMBRE_CAMPO TYPE INTEGER; Esto deberia cambiarte el tipo del campo dejando intacto la data en dicho campo. Saludos ! |
#13
|
|||
|
|||
no me deja hacer la modificación.
¿Alguna idea más? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
codigos de barras y Rave Report 5.0 | inexperto | Impresión | 0 | 27-05-2005 00:53:18 |
No se ven bien los caracteres especiales... | mlara | Windows | 0 | 10-10-2004 04:59:30 |
Ayuda por favor con COPYFILE o bien ¿como puedo copiar archivos? | Phacko | API de Windows | 1 | 28-07-2004 20:58:00 |
¿Como realizar bien un UPDATE? | judoboy | SQL | 11 | 13-05-2003 14:02:38 |
|