 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Dom 17 Jul, 2005 9:17 pm Asunto: Crear tablas en IB 7, con condicción, para Cesar |
|
|
| Código: |
create table DetallesComanda
(
Lugar varchar(7) not null,
Numero numeric(3,0) not null,
FamiliaArticulos numeric(2,0) not null,
CantArticulos numeric(2,0)not null,
CodArticulos integer not null,
DescripArticulos varchar(30)not null,
CodComentarios integer,
DescripComentarios varchar(30),
PrecioArticulos numeric(9,2) not null,
PrecioCosteArticulos numeric(9,2) not null,
PrecioComentarios numeric(9,2),
PrecioCosteComentarios numeric(9,2),
Orden numeric(4,0) not null,
Descripcion_Completa Computed by (DescripArticulos || ' ' || DescripComentarios),
Precio_PVP Computed by (PrecioArticulos + PrecioComentarios),
Precio_Coste Computed by (PrecioCosteArticulos + PrecioCosteComentarios),
Total_PVP Computed by (CantArticulos * Precio_PVP),
Total_Coste Computed by (CantArticulos * Precio_Coste),
primary key (Lugar, Numero, Orden)
);
|
Visto esta tabla, tengo el siguiente problema:
En los campos calculados con “Computed by”, tengo que controlar que si uno de sus campos es NULO que me ponga otro valor que yo quiera:
Ejemplo
| Código: |
if(DescripComentarios is null)
Descripción_Completa = DescripArticulos;
if(PrecioComentarios is null)
Precio_PVP = PrecioArticulos;
if(PrecioCosteComentarios is null)
Precio_Coste = PrecioCosteArticulos
|
¿Cómo implemento esto en la tabla?
Lo he intentado con una clausula “check”, pero no me aclaro, o no funciona.
Necesito vuestra ayuda. Gracias. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Jue 21 Jul, 2005 3:45 pm Asunto: |
|
|
Me creo que no vas a poder hacerlo con un Check, es lo que se me ocurre a priori, lo que si te puedo decir es muy sencillo, implementate un trigger, que se dispare en las insercciones o modificaciones, y que precisamente lo que estas preguntando, compruebe si cierto campo es null y entonces le de el valor del otro campo...
Ejemplo:
| Código: |
SET TERM ^
CREATE TRIGGER Comprueba_Comentarios FOR DetallesComanda
ACTIVE AFTER INSERT
AS
BEGIN
IF (OLD.DescripComentarios IS NULL) THEN
NEW.Descripcion_Completa=OLD.DescripArticulos;
IF (OLD.PrecioComentarios IS NULL) THEN
NEW.Precio_PVP=OLD.PrecioArticulos;
IF (OLD.PrecioCosteComentarios IS NULL) THEN
NEW.Precio_Coste=OLDPrecioCosteArticulos;
END
^
|
El trigger del ejemplo se disparará justo despues de hacer cada inserción en la tabla DetallesComanda, y comprabará cada uno de los tres campos y actuará en consecuencia para cada uno de ellos...
Quizás deberías también hacerlo en las modificaciones...
Bueno espero que te sirva, cuidate! ciao. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Vie 22 Jul, 2005 1:16 pm Asunto: Correcto |
|
|
Gracias por tú respuesta. Es que no sabía como implementar la sentencia if en un Procedimiento o Trigger. Ahora ya lo tengo claro. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|