Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Quiero capturar mensajes de error de Access y personalizarlos en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=62126)

bigpeter80 04-12-2008 21:17:26

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....

Delphius 04-12-2008 21:24:56

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,

coso 04-12-2008 22:17:21

Hola, existen tambien en el ADOQuery eventos relacionados con los errores (OnPostError, OnEditError,etc...). Saludos

bigpeter80 05-12-2008 15:30:24

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??

bigpeter80 05-12-2008 15:31:05

Gracias coso, voy a probar con esos eventos también..

bigpeter80 06-12-2008 11:13:44

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...

enecumene 06-12-2008 19:40:25

Cita:

Empezado por bigpeter80 (Mensaje 330006)
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.

Delphius 06-12-2008 19:57:53

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,

luchin001 09-12-2008 00:06:41

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 ....:rolleyes:, funciona con todos los acces incluida el 2007

son gratis y no tienes que estar reinventando la rueda .... :D

bigpeter80 10-12-2008 15:14:03

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?

luchin001 20-12-2008 18:32:45

Disculpa hace dias que no pasaba por aca:p

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.:o

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.


La franja horaria es GMT +2. Ahora son las 23:49:44.

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