PDA

Ver la Versión Completa : como crear exception para validar duplicación de llaves en tabla


viajero2015
16-10-2003, 22:53:50
Hola amigos.
como puedo crear una exception para poder validar una duplicación de una llave en una tabla en que evento de la misma puedo validar dicho caso.

Gracias por su ayuda

roman
16-10-2003, 23:01:24
El mismo método Post de TTable se encarga de lanzar una excepción ante una duplicación de llave. Si quieres controlar la excepción podrías usar algo como:


try
Table.Post;
except
{ código para manejar la excepción }
end;


// Saludos

Lepe
17-10-2003, 07:53:39
esto te vale fijo (http://www.clubdelphi.com/foros/showthread.php?threadid=4040&highlight=eKeyViol)


Saludos.

viajero2015
18-10-2003, 00:49:47
Hola gracias por al yudas d euds, hice eso con try except y trabajo, y vi la otra solucion pero por lo que vi e spara una base datos paradox y yo trabajo con uan base datos mdb, no habra diferencias?, ahora si quiero saber cual fue el código de error, pues pueds er que la clave principal la deje vacia o puede ser que ya este adicionado esa llave en la tabla, ahora como puedo yo saber el codifo que genero esa exception?.


saludos y gracias TOMAS

Lepe
20-10-2003, 11:33:54
esos errores te los pilla si usas BDE para el acceso a las tablas, que usas tu ? ADO ?

viajero2015
20-10-2003, 20:00:14
Yo uso ADO, pero ya me trabajo era que no sabia los codigos de errores pero ya, ahora estoy trabajndo en en el evento OnDeleteError que es para cuando s eva eliminar y s eproduce un error digamos cuando hay una tabla relacionada hija o sea de uno a mucho.

alquine me pudiera explicar la difernecia entre los tipos de accesoa datos que tiene delphi, digamos
ADO,BDE, IDBexplorer etc etc.
Gracias TOMAS

Cabanyaler
21-10-2003, 09:54:09
Yo lo hago de este modo:

// El post, lo protejo con una excepcion
try
DM.Tb.Post;
except
on E: EDBEngineError do // Ctrl de la Key Violation
begin
// Entro aqui pq se ha producido un error de clave duplicada
MessageDlg ('Posible clave DUPLICADA', mtError, [mbYes], 0);
end
else
begin
MessageDlg ('Error GENERAL en la Base de datos',[mbYes], 0);
end
end; // Del try