Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2005
Luis Castillo Luis Castillo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 102
Poder: 21
Luis Castillo Va por buen camino
Mensaje clave repetida

Que tal mis amigos.....


Tengo un pequeño problema que creo que no les costara trabajo responderme.

EStoy trabajando en una base de datos en Paradox y ya sabemos lo que pasa cuando insertamos la llave primaria repetida: 'KEY VIOLATION' o cuando dejamos de insertar un campo declarado como repetido.

El caso es que deseo poner mi mensaje y dependiendo de la tabla.

Yo consulte el siguente codigo para el evento OnPostError:

Código Delphi [-]
 procedure TDM.TTrabajadorPostError(DataSet: TDataSet; E: EDatabaseError;
 var Action: TDataAction);
 begin
   if (E is EDBEngineError) then
   Begin
     case (E as EDBEngineError).Errors[0].Errorcode of
       DBIERR_REQDERR: ShowMessage('Hace falta un valor necesario');
       DBIERR_KEYVIOL: ShowMessage('clave repetida para tabla...');
     Else
       Exit
     end;{case}
     action := daAbort;
   End;{if}
 end;
Pero no me esta funcionando porque me sale el mismo mensaje en ingles.

Que puede estar pasando?
__________________
LK

Última edición por dec fecha: 28-10-2005 a las 17:59:42. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 28-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Tienes que desactivar la opción Stop on Delphi Exceptions.

Esto lo ves en el menú Tools ->Debugger Options ->Pestaña Language exceptions.

Espero que sea eso...

Hasta Luego -
__________________
No todo es como parece ser...
Responder Con Cita
  #3  
Antiguo 28-10-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
Código Delphi [-]
try 
 ExecSQL; //Instrucción insert 
{Tambien podría ser E:EDBEngineError 
dependiendo del rango de errores que se quieran capturar} 
except on E:Exception do 
 if (E is EDBEngineError) then 
  with EDBEngineError(E).Errors[0] do 
   if ErrorCode = 9729 then 
    MessageBox(frmInicial.Handle,'Llave Luplicada.','Error',MB_ICONERROR);
end; //Fin try
capturar errores
llave duplicada
__________________


Última edición por ContraVeneno fecha: 28-10-2005 a las 18:43:41.
Responder Con Cita
  #4  
Antiguo 29-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
A tener en cuenta es que si el campo persistente en delphi tiene el valor de Required := True, el error será un EDatabaseError, y no será manejada la excepción por ese bloque.

Quita el Required en delphi para que entre en ese manejador.


Teniendo en cuenta que eso siempre estará en el OnPostError de un TTable, puedes usar esto:
Código Delphi [-]
   DBIERR_KEYVIOL: ShowMessage('clave repetida para tabla...'+
             TTable(Dataset).TableName);
Así puedes compartir el mismo evento OnPostError para todas las tablas.

saludos
__________________
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 10:40:55.


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