Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
¿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
Responder Con Cita
  #2  
Antiguo 06-05-2003
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
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...
Responder Con Cita
  #3  
Antiguo 06-05-2003
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Me imagino que si, ya que puede agregarle el 0 a la izquierda y guardar el valor...

Saludos...
Responder Con Cita
  #4  
Antiguo 07-05-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
Pues el asunto es que si, que es alfanumerico.

Pero entonces, puedo solucionarlo, o no?
Responder Con Cita
  #5  
Antiguo 07-05-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
¿Puedo cambiar el tipo de campo para que sea numerico?
Responder Con Cita
  #6  
Antiguo 07-05-2003
BenjiRock BenjiRock is offline
Registrado
 
Registrado: may 2003
Ubicación: Málaga
Posts: 4
Poder: 0
BenjiRock Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 07-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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";
Espero te sirva
Responder Con Cita
  #8  
Antiguo 07-05-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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).
Responder Con Cita
  #9  
Antiguo 07-05-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
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?
Responder Con Cita
  #10  
Antiguo 07-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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?
Responder Con Cita
  #11  
Antiguo 07-05-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
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.
Responder Con Cita
  #12  
Antiguo 08-05-2003
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 21
erickperez6 Va por buen camino
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 !
Responder Con Cita
  #13  
Antiguo 09-05-2003
judoboy judoboy is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 139
Poder: 21
judoboy Va por buen camino
no me deja hacer la modificación.

¿Alguna idea más?
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
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


La franja horaria es GMT +2. Ahora son las 08:50:05.


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