Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-06-2005
carlos gonzalez carlos gonzalez is offline
Miembro
 
Registrado: may 2005
Posts: 108
Poder: 19
carlos gonzalez Va por buen camino
Como capturar un error de base de datos

Hola amigos, tengo un problema, quiero atrapar los errores de la base de datos pero no me funciona, por ejemplo cuando se inserta una valor que ya existe siendo llave primaria, quiero mandar un mensaje de que ya existe ese dato, estoy utilizando tablas de DB2.



Con tablas de paradox utilizaba el sig. Código en el botón de guardar.



begin

try

if (pass.Text='') or (pass2.Text='') or(nom.Text='') or (userr.Text='') then

begin

guardar.enabled:=false;

application.messagebox('No Puede Haber Campos Vacios','Validacion De Datos',mb_ok+mb_iconerror);

end

else

begin

tuser.Post;

tuser.First;

pass2.Text:='';

end;

except

on EDBEngineError do begin

application.messagebox('Este Usuario Ya Existe','Validacion De Usuario',mb_ok+mb_iconerror);

cancelarClick(Sender);

end;

end;



pero no me funciona con tablas de db2.



Un amigo me paso el sig. Codigo



If (e is EDBEngineError) then

If EDBEngineError(e).errorcode=9729

Then showmessage (‘este usuario ya existe’)

Else

Raise;



Pero tampoco me funciona, me marca error donde dice errorcode



Y como yo soy nuevo en eso de atrapar errores estoy hecho bolas.



Alguien podria echarme una mano, según los comentarios que me han hecho llegar el segundo codigo es el mas adecuado para lo que quiero realizar, pero no lo he podido implementar.



Podrían decirme que es lo que debo de declarar para que me funcione, si lo tengo que manejar como un procedimiento o como un evento o si alguien fuera tan amable y pudiera darme un pequeño ejemplo se agradecería eternamente.



Su amigo carlos
Responder Con Cita
  #2  
Antiguo 20-06-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Que tal
yo tengo el mismo problema todavía... pero por motivos de tiempo tuve que solucionarlo no como yo hubiera querido, en fin, espero que alguien aporte alguna solución...

yo que yo hice fue lo siguiente
Código Delphi [-]
try
post
except on E:Exception then
ShowMessage('Error tipo: '+E.ClassName+', con el mensaje: '+E.Message);
end;

en fin, a mi tampoco me gusta, pero así tuve que hacerlo....
recuerda que requieres dbtables para reconocer a EDBEngineError
con tu ejemplo sería algo así como:

Código Delphi [-]
if (pass.Text='') or (pass2.Text='') or (nom.Text='') or (userr.Text='') then begin
guardar.enabled:=false;
application.messagebox('No Puede Haber Campos Vacios','Validacion De Datos',mb_ok+mb_iconerror);
end else begin
try
tuser.Post;
tuser.First;
pass2.Text:='';
except on E:Exception do begin
application.messagebox('Este Usuario Ya Existe','Validacion De Usuario',mb_ok+mb_iconerror);
cancelarClick(Sender);
end; //Fin except
end; //Fin try
end; //Fin if text=''
__________________


Última edición por ContraVeneno fecha: 20-06-2005 a las 19:38:42.
Responder Con Cita
  #3  
Antiguo 20-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Bueno, pues parece que este hilo está TRIPLICADO, quizás trabaje para Hacienda... (ya sé chiste malo, perdón).

Los dos hilos anteriores son estos, (uno de ellos cerrado)
http://www.clubdelphi.com/foros/showthread.php?t=22511
http://www.clubdelphi.com/foros/showthread.php?t=22515


La respuesta la publiqué en este hilo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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


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


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