Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   como crear exception para validar duplicación de llaves en tabla (https://www.clubdelphi.com/foros/showthread.php?t=4480)

viajero2015 16-10-2003 22:53:50

como crear exception para validar duplicación de llaves en tabla
 
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:

Código:

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

// Saludos

Lepe 17-10-2003 07:53:39

esto te vale fijo


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


La franja horaria es GMT +2. Ahora son las 17:21:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi