Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Oracle
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2017
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 296
Poder: 20
GustavoCruz Va por buen camino
Hola Roman ocurre en ambos lados. Estuve leyendo ésto y lo que se plantéa es correcto pero en mi caso se trata de validar el contenido de unos campos y solamente necesito el mensaje de mi excepción

Gracias por tu ayuda


Gustavo Cruz
Responder Con Cita
  #2  
Antiguo 13-06-2017
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pon el código que veamos qué haces.
Responder Con Cita
  #3  
Antiguo 13-06-2017
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 296
Poder: 20
GustavoCruz Va por buen camino
Este es el Código
Código SQL [-]
CREATE TRIGGER GUSTAVO_CRUZ.PACTABLE_BIU0
  BEFORE INSERT OR UPDATE
  ON GUSTAVO_CRUZ.PACTABLE
  FOR EACH ROW
DECLARE
  e_datos EXCEPTION;
BEGIN
  IF (:new.pacdepcodigo = '')
    OR (:new.pacdepcodigo IS NULL)
  THEN
    :new.pacdepcodigo := : old.pacdepcodigo;
  END IF;
  IF (:new.pacmuncodigo = '')
    OR (:new.pacmuncodigo IS NULL)
  THEN
    :new.pacmuncodigo := : old.pacmuncodigo;
  END IF;

  IF ((LENGTH(:new.pactipo) = 0)
    OR (LENGTH(:new.pacnumero) = 0)
    OR (LENGTH(:new.pacape1) = 0)
    OR (LENGTH(:new.pacnom1) = 0)
    OR (LENGTH(:new.pacsexo) = 0)
    OR (LENGTH(:new.pacdepcodigo) = 0)
    OR (LENGTH(:new.pacmuncodigo) = 0)
    OR (LENGTH(:new.pacepscodigo) = 0))
  THEN
    RAISE_APPLICATION_ERROR(-20000, 'Faltan datos del paciente');
  END IF;

  IF ((:new.pactipo IS NULL)
    OR (:new.pacnumero IS NULL)
    OR (:new.pacape1 IS NULL)
    OR (:new.pacnom1 IS NULL)
    OR (:new.pacsexo IS NULL)
    OR (:new.pacdepcodigo IS NULL)
    OR (:new.pacmuncodigo IS NULL)
    OR (:new.pacepscodigo IS NULL))
  THEN
    RAISE_APPLICATION_ERROR(-20000, 'Faltan datos del paciente');
  END IF;

  IF (:new.cronico IS NULL)
  THEN
    :new.cronico := 0;
  END IF;
  IF (:new.ipsres IS NULL)
  THEN
    :new.ipsres := 0;
  END IF;
  :new.paccompleto := '';
  IF (:new.pacape1 IS NOT NULL)
  THEN
    :new.paccompleto := :new.pacape1;
  END IF;
  IF (:new.pacape2 IS NOT NULL)
  THEN
    :new.paccompleto := :new.paccompleto || ' ' || :new.pacape2;
  END IF;
  IF (:new.pacnom1 IS NOT NULL)
  THEN
    :new.paccompleto := :new.paccompleto || ' ' || :new.pacnom1;
  END IF;
  IF (:new.pacnom2 IS NOT NULL)
  THEN
    :new.paccompleto := :new.paccompleto || ' ' || :new.pacnom2;
  END IF;
  IF (:new.pacestado IS NULL)
  THEN
    :new.pacestado := 'Activo';
  END IF;

END;
/

Última edición por Casimiro Noteví fecha: 13-06-2017 a las 23:05:54.
Responder Con Cita
  #4  
Antiguo 13-06-2017
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Y desde delphi?
Responder Con Cita
  #5  
Antiguo 14-06-2017
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 296
Poder: 20
GustavoCruz Va por buen camino
Ahora simplemente pongo una dbgrid e intencionalmente lanzo la excepción te adjunto una imagen
Imágenes Adjuntas
Tipo de Archivo: png error_.png (7,7 KB, 18 visitas)
Responder Con Cita
  #6  
Antiguo 14-06-2017
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Pero eso es ejecutando desde delphi o desde fuera, independientemente?
Responder Con Cita
  #7  
Antiguo 15-06-2017
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 947
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Lo que sucede es que el texto del error contiene todo el string que se despliega:

Posible solución:
Código Delphi [-]
var
    STexto:String;
begin
 Try

...lineas de código
...

Except on E : Exception Do
begin
       {
       E.Message:='ORA-20000: Faltan datos...bla...bla...bla..'+#13+
                         'ORA-06512 at "gustavo_cruz.pacientes_biu", line 17'+#13+
                         'ORA-04088 error during execution of trigger '+#13
                         'gustavo_cruz.pacientes_biu0';
       }
       {Solución: extraer el texto que deseas visualizar, desde E.Message.}
       STexto:=Copy(E.Message, 1, 25); //Resultado =>ORA-20000: Faltan datos
        
       Showmessage(E.Message); //Mensaje completo

       Showmessage(STexto);  //Solo mostrara el texto que extrajiste de E.Message.
end

Todo lo anterior en base a suposiciones, ya que no incluiste el código donde controlas el error.

Espero te ayude, saludos cordiales
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Manejo de excepciones Valee Varios 2 07-02-2016 21:23:28
Manejo de excepciones doctorhd Varios 8 12-04-2013 21:14:43
Manejo de Excepciones anghell77 OOP 7 10-08-2006 18:46:48
manejo de excepciones try y except no funciona gulder Conexión con bases de datos 4 10-11-2005 14:50:00
manejo de excepciones el_barto Varios 4 08-06-2005 09:48:36


La franja horaria es GMT +2. Ahora son las 20:28:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi