Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2008
Avatar de bigpeter80
bigpeter80 bigpeter80 is offline
Miembro
 
Registrado: nov 2008
Posts: 11
Poder: 0
bigpeter80 Va por buen camino
Quiero capturar mensajes de error de Access y personalizarlos en Delphi

Hola amigos del Club, de nuevo yo con un nuevo problema... Estuve buscando en los foros pero no encontre nada o simplemente se me paso....
Bueno, tengo una base de datos Access, utilizo una conexión Jet4 y lo que necesito hacer ahora, es, al momento de comprobar los datos que estoy guardando, si por ejemplo, no se ha ingresado un campo requerido, quiero capturar el mensaje de error de la base de datos y personalizar el mensaje de error.

Hasta ahora, con la ayuda de los foros del club he conseguido capturar el mensaje de error en Delphi asi:
Código Delphi [-]
procedure TFProp.BtnGuardarClick(Sender: TObject);
begin
  try
    if MessageDlg('¿Desea guardar el registro?',mtConfirmation, mbYes,mbNo],0)=mrYes then   // si la respuesta es si
      begin
        ADOQuery1.Post;   // guarda el registro
      end
    else
      begin
        DBEdit1.SetFocus;  // sino se vuelve a posicionar en el formulario
      end;
 except
 on E:EDatabaseError do  // si hay un mensaje de error de la BD
  begin
      ShowMessage('Error: '+E.message); // muestra  error de la BD
   end;
 end;
end;
Con esto logro capturar el mensaje de error de la Base de Datos Access y mostrarlo en Delphi. Ahora lo que necesito hacer es, cuando exista un mensaje de error, capturarlo y saber si se trata de un error de duplicación de datos, o campos requeridos; y entonces crear mi propio mensaje de error ("Debe ingresar todos los datos").

Espero se comprenda la idea... Gracias a todos desde ya....

Última edición por bigpeter80 fecha: 05-12-2008 a las 15:27:56. Razón: Modificar etiquetas vB
Responder Con Cita
  #2  
Antiguo 04-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola bigpeter80,
Pues el procedimiento es el mismo:

Código Delphi [-]
try
  // lo que deseas intentar
except 
  on E: ETipoError1 do
      begin
          // que hacer en este tipo de error...
      end;
  on E: ETipoError2 do
      begin
         // que hacer si el error es de otro tipo...
      end; 
end; // fin del try

El asunto ahora es encontrar la lista de los tipos (mejor dicho clases) de errores

EDITO: Por favor emplea las etiquetas DELPHI para que el código resalte.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 04-12-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, existen tambien en el ADOQuery eventos relacionados con los errores (OnPostError, OnEditError,etc...). Saludos
Responder Con Cita
  #4  
Antiguo 05-12-2008
Avatar de bigpeter80
bigpeter80 bigpeter80 is offline
Miembro
 
Registrado: nov 2008
Posts: 11
Poder: 0
bigpeter80 Va por buen camino
Gracias por las rcomendaciones delphius, y voy a seguir probando.... Con respecto a los códigos de error, alguien tiene idea cuáles son los códigos por cada tipo de error para bases de datos access??
Responder Con Cita
  #5  
Antiguo 05-12-2008
Avatar de bigpeter80
bigpeter80 bigpeter80 is offline
Miembro
 
Registrado: nov 2008
Posts: 11
Poder: 0
bigpeter80 Va por buen camino
Gracias coso, voy a probar con esos eventos también..
Responder Con Cita
  #6  
Antiguo 06-12-2008
Avatar de bigpeter80
bigpeter80 bigpeter80 is offline
Miembro
 
Registrado: nov 2008
Posts: 11
Poder: 0
bigpeter80 Va por buen camino
No encuentro las clases de error

No logro encontrar las clases de error o tipos de errores de la EDatabaseError, si alguien puede darme una ayudita le estare agradecido...
Responder Con Cita
  #7  
Antiguo 06-12-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por bigpeter80 Ver Mensaje
No logro encontrar las clases de error o tipos de errores de la EDatabaseError, si alguien puede darme una ayudita le estare agradecido...
¿Y qué clase de errores o escepciones intentas capturar?, si no son genéricos de Delphi tienen un tratamiento diferente, intentalo así:

Código Delphi [-]
try
//código
except
on E: Exception do
 if E.ClassNameIs('nombre de la clase') then
   //Aquí codificas el error
end;

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #8  
Antiguo 06-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
El asunto es que debe estudiarse como es la jerarquí de clases de EDataBaseError, que es la clase base a todas las excepciones producidas por los motores de base de datos. Esta clase se encuentra en la unidad DB.

Si usas ADO, luego debería estudiar la clase y la rama de jerarquía de EADOError.
Lastimosamente debe investigar y reveer la unidad ADODB que es donde se manejan lo referente a ADO.

Si emplea otra tecnología, el proceso es el mismo, estudiar la jerarquí de clases de excepciones que se manejen allí.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 09-12-2008
Avatar de luchin001
luchin001 luchin001 is offline
Miembro
 
Registrado: may 2003
Posts: 36
Poder: 0
luchin001 Va por buen camino
Puedo opinar ?

http://www.kadao.dir.bg/

Set de componentes Kadao, te permiten controlar todos los mensajes de access, especificamente el componente Kadaoinfo y la libreria msldbusr.dll, se puede hasta identificar que usuario se conecto ...., funciona con todos los acces incluida el 2007

son gratis y no tienes que estar reinventando la rueda ....
Responder Con Cita
  #10  
Antiguo 10-12-2008
Avatar de bigpeter80
bigpeter80 bigpeter80 is offline
Miembro
 
Registrado: nov 2008
Posts: 11
Poder: 0
bigpeter80 Va por buen camino
Hola a todos... Luchin001 he descargado el set de componentes Kadao del link que has puesto, ya lo instale... Ahora te pregunto, si no es molestia, como lo utilizo?
Responder Con Cita
  #11  
Antiguo 20-12-2008
Avatar de luchin001
luchin001 luchin001 is offline
Miembro
 
Registrado: may 2003
Posts: 36
Poder: 0
luchin001 Va por buen camino
Disculpa hace dias que no pasaba por aca

http://www.clubdelphi.com/foros/showthread.php?t=8510

aqui yo buscaba una solucion a algo similar a lo que necesitas tu, espero te sirva.

ahora si te fijas el componente tiene las siguientes propiedades:

active = boolean
daoinfodll = ubicacion de la dll
database = base de datos
errousers = lista de errores de los usuarios
lasterror
lasterrortext
loggeduserex

no es nada complicado

no te olvide de usar la dll localmente, no en el servidor por la velocidad, se ralentiza mucho usar la dll remotamente.

Última edición por luchin001 fecha: 20-12-2008 a las 18:49:41.
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
Interceptar mensajes error ADO Access pablonill Conexión con bases de datos 4 26-04-2007 12:14:53
Capturar los mensajes de mysql en delphi jjaen26 MySQL 0 21-12-2006 06:52:28
Capturar Mensajes de error daly Varios 5 27-10-2005 20:56:46
Capturar mensajes de error de SQL server User_baja1 SQL 2 10-02-2005 18:11:21
Capturar errores y personalizarlos @-Soft OOP 5 01-03-2004 13:10:02


La franja horaria es GMT +2. Ahora son las 16:00:39.


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