PDA

Ver la Versión Completa : ADO y Access


moni
14-05-2004, 00:20:03
Estoy trabajando con los componentes ADO y Base de Datos Access. Tengo problemas cuando tengo que manejar los mensajes de Excepción de error (EOleException) cuando intento grabar un registro duplicado. Intenté solucionar esto utilizando la sentencia Try...Except on EOleException do, me da un error variable undeclared identifier.


Desde ya Muchas Gracias..

Paoti
15-05-2004, 03:01:41
Hola!!!


ojala te sirva esto, no lo he probado.....



cuando te marque el error, apunta ese numerito raro (que es la clave del error que te manda Ado) y despues haces un try... except manejando en un if ese error por ejemplo

if e.HelpContext = 123145645e12 then


123145645e12 <--- asi suelen aparecer estos numeritos de error

Nota: trata de usar un nombre de excepcion generica, para que la pueda capturar el except (desconozco si pueda ser la clase Exception, directamente)

espero haberte ayudado.... que estes bien moni

jachguate
15-05-2004, 06:43:09
on EOleException do, me da un error variable undeclared identifier.
Te falta incluir en la clausula uses la unidad donde está declarada la clase EOleException. Basta pulsar F1 sobre esta palabra en el editor, y la ayuda te indica:


Unit

ComObj


Nota: trata de usar un nombre de excepcion generica, para que la pueda capturar el except (desconozco si pueda ser la clase Exception, directamente)

En teoria podes usar la clase genérica Exception para capturar cualquier excepción. Digo en teoria, porque una excepción podria no derivarse de esta clase (una muy mala práctica por cierto) y en ese caso no la capturarias.

Yo te recomiendo todo lo contrario que Paoti. Que en la clausula Exception seas tan específico como te sea posible, de esta forma capturaras exclusivamente las excepciones para las que "sabes" como actuar, o con las que te interesa tener un comportamiento determinado. Si de pronto ocurre una excepción porque el sistema se ha quedado sin recursos, o el disco está lleno... si simplemente no la capturas y dejas que un bloque mas externo o el propio delphi trate con estos problemas.

Hasta luego.

;)

axel_mdq
20-05-2004, 21:25:19
Tenes que usar try/except de la siguiente forma.

Try

Except
on e:exception do
begin
showmessage('Error inesperado. Mensaje original: '+e.message);
{Tambien podes agregar algun rollback que quieras hacer si usas transactions}
end;
end;

Espero que te sirva.

Saludos,

Alejandro.

moni
15-06-2004, 13:39:01
Muchas Gracias por las Respuestas.

moni ;)

FNADALO
15-06-2004, 13:50:11
Porque no lo solucionas definiendo que
dicho campo de la tabla es de tipo único.