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 11-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Smile Crear un EXCEPTION para un VarChar

Hola soy nuevo en bases de datos antes usaba Acces como veran es muy diferente a FireBird.

El asunto es que quiero crear un EXCEPTION para un VarChar que si ha excedido el limite de caracteres mande el mensaje ""

lo que tengo es:
"CREATE EXCEPTION FstName_Menor_50 'Nombre de Cliente muy Largo reduzca el tamaño por favor a 50 letras.'"

pero no se como crear el TRIGGER para ese EXCEPTIO.

Me pueden ayudar por favor.

Muchas Gracias por la ayuda
Responder Con Cita
  #2  
Antiguo 12-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Edchar, bienvenido a Club Delphi

Script ejemplo:
Código SQL [-]
SET TERM ^;

CREATE EXCEPTION EX_NOM_MAX 'Longitud máxima del nombre: 50 caracteres.' ^

CREATE OR ALTER TRIGGER CLIENTE_BIU FOR CLIENTES
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN
  IF (CHAR_LENGTH(NEW.NOMBRE) > 50) THEN
    EXCEPTION EX_NOM_MAX;
END ^

SET TERM ;^
Una imágen resultante de esta excepción desde Delphi:



Como dato adicional, el nombre de la excepción puede tener hasta 31 caracteres y el mensaje hasta 78.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 12-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Muchas gracias ecfisa por la bienvenida espero aprender con la ayuda de todos ustedes, tu ayuda me fue de mucha utilidad.

Ahora tengo otro problema y es que estoy trabajando con .Net y C# y aunque todo corre bien no me presenta ese cuadro de mensaje que es el que quiero que presente al usuario.

¿Como hago eso?

¿Acaso el TRIGGER debe de devolverme algo para crear un cuadro de mensaje desde .Net o FireBird tiene alguna forma de crear dicho cuadro de mensaje?

Muchas Gracias de nuevo, los novatos apreciamos todas esas ayudas.

Saludos
Responder Con Cita
  #4  
Antiguo 12-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Lamento no conocer .NET o C# como para asegurar como funcione en esos lenguajes. Pero tanto en Object Pascal como en C++ no es necesario crear el cuadro de mensaje, este se muestra tál como cuando se dispara cualquier otra excepción.

Es probable que en los lenguajes C# y .NET se comporte del mismo modo... De todos modos, creo que lo mas acertado es que pongas esta consulta en el foro [.NET] donde algún experto en ellos te podrá asesorar mejor.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 12-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Muchas gracias por tu ayuda pero creo que ya voy entendiendo un poco las bases de datos como firebird y según me párese esta puede contener las consultas y demás mediante SQL algo que no se podía hacer con Acces pues todo lo relacionado con SQL tenia que hacerse en el programa que uno iba creando, en otras palabras la base de datos interactua con el programa y no con el usuario, yo estoy usando Firebird lo que denominan Embebido o Monosaurio.

Ahora bien me podrías explicar un poco el funcionamiento de los TRIGGER.
Me parece que son como manejadores de eventos si es así que eventos puede manejar.

Gracias Saludos
Responder Con Cita
  #6  
Antiguo 12-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Edchar Ver Mensaje
Ahora bien me podrías explicar un poco el funcionamiento de los TRIGGER.
Hola Edchar.

En los siguientes enlaces vas a encontrar una explicación mejor y más organizada que la que yo podría brindarte:Buscando en la web podrás profundizar más sobre el tema.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 12-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Muchas Gracias por los Link me ayudaron mucho, seguro en mas de una ocasión estaré buscando ayuda de ustedes.
Responder Con Cita
  #8  
Antiguo 16-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Un ultimo asunto sobre este tema y es que buscando encontré algo que me parece util y es hacer que el mensaje de error sea modificado en el momento en que este se efectúa como por ejemplo en el siguiente ejemplo que indica de cuantos caracteres es el nombre.

newDB.CreateTable("CREATE EXCEPTION FstName_Menor_50 'Error: '");
newDB.CreateTable("CREATE TRIGGER catalog_FstName FOR CLIENT_TBL " +
"ACTIVE BEFORE INSERT OR UPDATE POSITION 0 " +
"AS " +
"BEGIN " +
"IF (CHAR_LENGTH(NEW.name) >= 51) THEN " +
"EXCEPTION FstName_Menor_50 'El Nombre debe ser menor a 50 caracteres y posee ' || CAST(CHAR_LENGTH(NEW.name) AS VARCHAR(50)); " +
"END");

A mi me funciono bien ¿Es esto correcto o existe una mejor forma de hacerlo?

Con relación al signo de + como estoy trabajando en .Net es para unir texto asi que no le presten atención.

Muchas Gracias
Responder Con Cita
  #9  
Antiguo 16-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.091
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, sigue las normas del club, y haz caso de ecfisa.
Preguntas distintas en hilos distintos, elige bien el foro adecuado, pon un título descriptivo, etc.
Lo dicho, nuestras normas, lo que llamamos guía de estilo.
Responder Con Cita
  #10  
Antiguo 16-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Gracias Casimiro por tu recomendaciones me resultaron útiles los Link y voy a darles atención y creo que lo primero que are es no hacer referencia a .Net pero debido a trabajar con FireBird tengo que buscar un foro apropiado para aprender sobre el lenguaje interno de SQL que usa y creo que este es el foro que mas información me puede brindar.

Me disculpo si he puesto algo que no fue apropiado, de hecho noto que al poner los ejemplos se formatean de una forma especial lo tendré en cuenta a futuro pues las dudas están relacionada con esa parte.

Muchas Gracias por tus comentarios y la ayuda que me brindas, Saludos
Responder Con Cita
  #11  
Antiguo 16-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.091
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Para formatear el código sólo has de seguir este ejemplo:




Espero que podamos ayudarte en tus dudas
Responder Con Cita
  #12  
Antiguo 17-12-2012
Edchar Edchar is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Edchar Va por buen camino
Muchas Gracias, Lo tendré en cuenta
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
Parámetro VarChar de búsqueda, ¿es válido aumentar su tamaño para evitar error? Al González Conexión con bases de datos 15 18-11-2008 22:16:35
Para qué usar raise Exception wascar2003 Varios 3 20-11-2007 12:50:15
EXCEPTION con parametros u otro comando para abortar fcios Firebird e Interbase 10 31-03-2007 08:39:16
UDF para convertir de un BLOB Type Text a un Varchar???? AGAG4 SQL 0 06-12-2004 19:59:47
como crear exception para validar duplicación de llaves en tabla viajero2015 Conexión con bases de datos 6 21-10-2003 09:54:09


La franja horaria es GMT +2. Ahora son las 16:41:36.


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