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-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Limites en declaración de tipos de campo

Hola amigos del club. Tengo un problemilla: tengo una base de datos hecha en InterBase. Esta es bien sencilla y su trabajo es almacenar datos que varian de 0 a 35.50 no más. Sin embargo tengo el problema que de vez en cuando a los operadores se les va un teclazo y zas que ingresaron un 450! Se que esto se puede limitar colocando en el TextBox una mascará (en la propiedad EditMask). Pero mi pregunta es: ¿Es posible fijar los limites cuando se declara el campo en la base de datos?

Por ejemplo algo así como:

Código SQL [-]
CREATE TABLE EJEMPLO (
  FECHA TIMESTAMP NOT NULL,
  INGRESO DECIMAL(6, 3) >0 && <=35.50,
);

Se que es una tontería pero no se como hacerlo. Como hacer para fijar rangos de ingreso desde la base de datos?

Desde ya gracias amigos.
Responder Con Cita
  #2  
Antiguo 07-06-2012
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
Cita:
Empezado por Diego827 Ver Mensaje
Hola amigos del club. Tengo un problemilla: tengo una base de datos hecha en InterBase. Esta es bien sencilla y su trabajo es almacenar datos que varian de 0 a 35.50 no más. Sin embargo tengo el problema que de vez en cuando a los operadores se les va un teclazo y zas que ingresaron un 450! Se que esto se puede limitar colocando en el TextBox una mascará (en la propiedad EditMask). Pero mi pregunta es: ¿Es posible fijar los limites cuando se declara el campo en la base de datos?

Por ejemplo algo así como:

Código SQL [-]CREATE TABLE EJEMPLO ( FECHA TIMESTAMP NOT NULL, INGRESO DECIMAL(6, 3) >0 && <=35.50, );


Se que es una tontería pero no se como hacerlo. Como hacer para fijar rangos de ingreso desde la base de datos?

Desde ya gracias amigos.
check (value > 0 and < 35.50)

Ahora no puedo comprobar la sintáxis pero es algo así.
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-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
(Algo curioso pero que a todos nos pasó alguna vez)

Saben mis queridos amigos, me tienen mal acostumbradisimo!!! jaja se los comento porque deje abierto el explorador web, y a cada rato regreso a ver si ya respondieron. La verdad, siempre me han sacado de apuros! Se por supuesto que no se tiene un Foro-Center tipo Call-center en donde esta mi apreciado Casimiro Notevi etc, esperando que un ignorante como yo postee para responder! jaja me causo gracia y quise comentarlo. Se bien que un foro es foro, no el chat de FaceBook ni mucho menos Twitter y tampoco messenger pero me causo gracia lo anterior.

Por todas las veces que me salvan el pellejo (que feo pero me cubre del frio todavia) Gracias!
Responder Con Cita
  #4  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Gracias por responder!

Hola marcoszorrilla, gracias por responder. Ahora busco alguna referencia.
Responder Con Cita
  #5  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Encontre esto y me parece que es lo que necesito

Bueno encontre esto, me dirás si es lo que yo mismo deseo y a lo que te referías:

Código SQL [-]
CREATE TABLE SALARY_HISTORY
(EMP_NO EMPNO NOT NULL,
CHANGE_DATE DATE DEFAULT 'NOW' NOT NULL,
UPDATER_ID VARCHAR(20) NOT NULL,
SH_OLD_SALARY SALARY NOT NULL,
PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL CHECK (PERCENT_CHANGE BETWEEN –50 AND 50),
NEW_SALARY COMPUTED BY
(OLD_SALARY + OLD_SALARY * PERCENT_CHANGE / 100),
CONSTRAINT PK_SH PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID),
FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO)
ON UPDATE CASCADE
ON DELETE CASCADE);

Marqué el área que creo que me indicas arriba, esa sería la forma de declararlo? Voy a probarlo y comento!
Responder Con Cita
  #6  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Excelente marcoszorrilla!

Me has ayudado a resolver mi problema.

Observa:

Código SQL [-]
CREATE TABLE PRUEBA (
  FECHA TIMESTAMP NOT NULL,
  DATO DECIMAL(2, 2));


ALTER TABLE BELEN ADD PRIMARY KEY (FECHA);

ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 5);

Y vualla! ahora salta un mensaje diciendo que esta violando un "check". Una pregunta más: Si necesito cambiar este valor en el futuro, como seria?
Debo primero hacer algo como:

Código SQL [-]
ALTER TABLE BELEN REMOVE CHECK (NIVEL BETWEEN 0 AND 5);
ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 6);

o sólo con darle:

Código SQL [-]
ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 6);

Como sería? Busque pero no encontré nada?! Voy a intentar hacerlo y posteo...
Responder Con Cita
  #7  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
No puedo modificar el check creado... (help me)

Hola amigos;

Bueno pues he creado con la ayuda de marcoszorrilla la famosa restricción, empero no logro modificarla y mucho menos borrarla! ya intente usar "REMOVE" en vez de "ADD" y también intenté darle:

Código SQL [-]
ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 6);

Como sobreescribiendo el anterior CHECK pero no me funcionó, ¿alguna idea?
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
Limites de Firebird gmontes Firebird e Interbase 1 24-03-2008 23:08:07
Limites de Delphi walito Varios 5 16-11-2007 15:32:34
Declaracion de nuevos tipos FGarcia Varios 2 10-05-2007 20:46:21
El Ser Humano no tiene LIMITES vtdeleon La Taberna 5 26-09-2006 17:18:36
Limites de datos muli Firebird e Interbase 1 22-10-2003 17:52:04


La franja horaria es GMT +2. Ahora son las 10:40:40.


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