FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problema para capturar Errores
Hola amigos tengo un problema ojala puedan ayudarme u orientarme, se los voy a agradecer infinitamente, ya tengo mas de una semana y no he podido solucionar este problema., dejen les explico. Lo que quiero es cachar los errores que manda la base de datos cuando se comete un error por ejemplo duplicación de una llave primaria y mandar un mensaje hecho por mí evitando que el sistema truene y siga corriendo.
Anteriormente usaba el EDBEngineError y me jalaba perfectamente, por ejem. El sig. Código lo tenía en el botón de guardar y cuando se cometía un error de duplicación de llaves primarias me manda un mensaje. procedure TForm33.guardarClick(Sender: TObject); 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; nom.ReadOnly:=true; userr.ReadOnly:=true; pass.ReadOnly:=true; pass2.Enabled:=false; primer.Enabled:=true; siguiente.Enabled:=true; anterior.Enabled:=true; ultimo.Enabled:=true; eliminar.Enabled:=true; editar.Enabled:=true; guardar.Enabled:=false; nuevo.Enabled:=true; cancelar.Enabled:=false; salir.Enabled:=true; 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; end; Pero mi problema ahora es que estoy utilizando tablas de DB2 montadas en un servidor AS/400 y la rutina anterior no me funciona., alguien podría ayudarme a salir de este problema, se los voy a agradecer eternamente. Su amigo Charles Que DIOS los bendiga |
#2
|
||||
|
||||
AMIGO
UTE NO ENTIENDE QUE NO PUBLIQUE MAS DE UN HILO!!! LOS DEMAS QUE ME DISCULPEN PERO....LA GENTE NO LEEE!!! PD:disculpen la mayuscula tambien
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#3
|
|||
|
|||
Perdon
Perdon por publicar mas de un hilo, soy nuevo en el uso de esta pagina, pero ya ni vuelve a suceder
Saludos tu amigo Charles |
#4
|
||||
|
||||
Saludos
1ero Bienvenido al Foro 2do Leer Guía de Estilo de los foros calidad de las preguntas Utilizar la etiqueta CODE Asi no volvera a suceder Disculpa mi manera de contesta ahorita, pero esta semana ha sido un caos
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#5
|
||||
|
||||
Independientemente de lo comentado por vtdeleon Comprueba esto:
doble clic a tu tabla tuser. En algún campo tienes la propiedad Required a True?, en delphi. Si lo tienes, (casi seguro que si) entonces el error de clave duplicada es un EdatabaseError, por eso no entra en el except que tienes puesto. Puedes poner a ese campo el Required a false, y dejar en tu base de datos Required a True; así si funcionará con el código actual. Otro tema más grave, es que estas capturando cualquier error de tipo EDBEngineError. El error concreto de violacion de claves es: Integrity Violation 9729 : Key violation. (en internet buscando por "BDE ERROR CODES", seguro que encuentras el listado completo). La comprobación correcta será:
Edito: Faltaba poner .Errors[0] para acceder a ErrorCode, Gracias carlos Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 20-06-2005 a las 18:11:17. Razón: Código Incompleto. |
#6
|
||||
|
||||
ESDMssError?????
Saludos a todos
Estoy tratando de captura el mismo error de "duplicate key" pero no logro conseguirlo... estoy utilizando SQL server y delphi 5. el problema es que E no es EDBEngineError, el classname que me muestra es ESDMssError pero tampoco logro encontrar información sobre ese punto. El error se refiere a "duplicate key" con el número de error 2601 el cuál si he encontrado información... en fin, si alguien tiene alguna pista de hacia donde dirigirme se los agradecría mucho. este es el código que tengo:
Gracias y saludos a todos.
__________________
|
|
|
|