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 07-07-2011
cotymel cotymel is offline
Registrado
 
Registrado: jul 2008
Posts: 4
Poder: 0
cotymel Va por buen camino
Ayuda - Campo AUTO - Base de Datos

Hola, tengo el siguiente inconveniente:
En una base de datos tengo una tabla (HOJADERUTAS) con los siguientes campos:
(Key)NUMHOJADERUTA / AUTO
IDCADETE / SMALLINT
FECHORAPARTIDA / TIMESTAMP
FECHORALLEGADA / TIMESTAMP

El campo (NUMHOJADERUTA) está generado por un generador (GEN_HOJADERUTA) con un objeto trigger (CREATE_HOJADERUTA) con la siguientes característica:
Tipo BEFORE INSERT...
As
Begin
NEW.NUMHOJADERUTA = GEN_ID (GEN_HOJADERUTA, 1);
end

Concretamente el inconveniente es que venía funcionando bien (el número de hoja de ruta actual es el 32767), pero ahora cuando se genera una hoja de ruta nueva me está arrojando el siguiente error:
32769 n´est pas une valeur correcte pour le champ 'NUMHOJADERUTA' les valueurs doivent etre comprises entre 32768 et 32767

La cosa que no puedo generar más hojas de rutas y la situación en la empresa es un caos y me están por colgar!!!
Responder Con Cita
  #2  
Antiguo 07-07-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Create una tabla nueva, con el campo como BigInt traspásele todos los datos de la antiguga, elimina la antigua, renombra la nueva al nombre de la antigua y creo que tendrás resuelto el problema.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 07-07-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por marcoszorrilla Ver Mensaje
Create una tabla nueva, con el campo como BigInt traspásele todos los datos de la antiguga, elimina la antigua, renombra la nueva al nombre de la antigua y creo que tendrás resuelto el problema.

Un Saludo.

Está claro que el campo clave NUMHOJADERUTA es un smallint, debes cambiarlo como te ha informado marcoszorrilla, por un tipo de campo mayor.
El smallint sólo llega hasta 32767
Responder Con Cita
  #4  
Antiguo 08-07-2011
cotymel cotymel is offline
Registrado
 
Registrado: jul 2008
Posts: 4
Poder: 0
cotymel Va por buen camino
Muchas gracias por tus comentarios.
No estoy muy ducho en el tema, por eso consulto.
En caso de proceder como indicás, al colocar al campo como BigInt la generación del número de NUMHOJADERUTA (que hoy se genera en forma automática a través del GEN_HUJADERUTA) se verá afectado?
Responder Con Cita
  #5  
Antiguo 08-07-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Como el nombre del campo es el mismo no tendrías que realizar ningún cambio.

Puedes desde ISQL comprobar el estado del generador, es decir en que número se encuentra en estos momentos.

Código SQL [-]
ISQL> SHOW GENERATOR Nombre_Del_Generador;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 19-07-2011
cotymel cotymel is offline
Registrado
 
Registrado: jul 2008
Posts: 4
Poder: 0
cotymel Va por buen camino
Marcos muchas gracias por tus indicaciones.
Ahora te consulto lo siguiente, pude crear la tabla nueva, pasarle todos los datos, lo que no puedo es renombrar las tablas.
Cómo debo proceder?
Nuevamente gracias. Saludos.
Responder Con Cita
  #7  
Antiguo 19-07-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Amigo, eso ya se te ha contestado más arriba:

Cita:
Créate una tabla nueva, con el campo como BigInt traspásele todos los datos de la antigua, elimina la antigua, renombra la nueva al nombre de la antigua y creo que tendrás resuelto el problema.
Responder Con Cita
  #8  
Antiguo 20-07-2011
cotymel cotymel is offline
Registrado
 
Registrado: jul 2008
Posts: 4
Poder: 0
cotymel Va por buen camino
Muchas gracias por contestarme Casimiro.
Tengo claro lo que anteriormente me aconsejaron, lo que estoy consultando ahora es:
-Cómo procedo para renombrar la tabla? Ya que es lo único que hasta ahora no logré hacer.
Nuevamente gracias.
Responder Con Cita
  #9  
Antiguo 20-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Me parece que solo es necesario cambiar el tipo de campo desde SmallInt a Integer o BigInt. Creo que no tendrás que utilizar una tabla intermedia, pues estarías cambiando el tipo de datos entre similares. SmallInt => Integer.

Por otro lado, tengo la impresión que utilizar BigInt sería demasiado. Esto lo digo porque creo que el valor de los generadores solamente soportan valores entre el rango de Integer, no más. Si estoy equivocado, entonces procede a utilizar BigInt si haces inserciones masivas en la susodicha tabla.

Saludos,
Chris.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #10  
Antiguo 20-07-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No recuerdo exactamente, echa un vistazo a ver si lo encuentras.
Aunque puedes pasar los datos a una nueva con el nombre ya correcto.
Algo así como:
Código SQL [-]
Insert into tutabla (select * from tablatemporal)
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
Insertar Datos a un campo de la base de datos desde un DBEdit saltamirano Varios 11 12-12-2007 17:29:35
Problema con Campo con nombre AUTO elmarkivo SQL 7 03-12-2007 21:26:28
Campo DOUBLE en una base de datos verodelphi Conexión con bases de datos 1 12-09-2007 15:57:35
Auto completar un campo lookUp... Perio Varios 4 13-07-2005 14:56:40
reiniciar campo auto incremento LOBO VELEZ Tablas planas 7 16-01-2005 19:54:51


La franja horaria es GMT +2. Ahora son las 15:45:07.


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