Club Delphi  
    Paypal   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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 19-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por viajero2015
Hola roman oye gracias pro tu ayuda eh, peor sabes no me dio resultado el vento no me sigue cogiendo la excepcion esa yo con TTable si me da el error peor con AdoTable no nada, ni contu ejemplo a ti te se ejecuto bien el evento posterror del esa tabla ADO?
sin embargo probe con
try
post;
Except
mensaje()
y ok peor en el mismo formulario peor quiero hacerlo como dios manda

esto me tiene loco, saludos TOMAS
Vamos a tratar de desmenuzar esto porque debe haber una explicación. Estuve un rato mirando el grupo de noticias borland.public.delphi.database.ado y hay varias menciones acerca de problemas con OnPostError como, por ejemplo, que no se dispara si el LockType de la tabla está en BatchOptimistic, o mejor dicho, se dispara sólo hasta que se llama a ApplyUpdates. No obstante no parece ser tu problema.

De cualquier forma lo primero será determinar perfectamente si el evento se dispara o no:

Coloca un breakpoint justo al comienzo del evento:

Código:
procedure TForm1.ADOTablePostError(...);
begin // <-- breakpoint aquí (F5)
...
end;
Ejecuta la aplicación y fuerza un error. Si se detiene en el punto marcado (y yo sospecho que así será) querrá decir que el problema es que por alguna razón no se cumplen las condiciones del case.

Originalmente hice la prueba usando como proveedor de la conexión el que pone por defecto:

Microsoft OLE DB Providerfor ODBC Drivers

y todo funcionó correctamente con las constantes E_DB_KEYVIOLATION y E_DB_REQUIREDFIELD que puse anteriormente.

Pero después cambié de proveedor a

Microsoft Jet 4.0 OLE DB Provider

y ¡sorpresa! no se dispararon mis mensajes sino que de vuelta obtuve los que da por defecto.

Sin embargo que entraba al evento, sólo que las condiciones no se cumplían: ¡las constantes eran otras!

Buscando en el grupo de noticias ví que los códigos de error dependen tanto de la base de datos misma como del proveedor.

Si estás en este caso, es decir si sí entra al evento pero no cumple las condiciones entonces lo único que debes hacer es investigar cuáles son las constantes correctas. Yo lo hice con mi método favorito

Caption := IntToStr(AdoConnection.Errors[0].NativeError);

y generando cada uno de los errores que me interesan (seguro que en algún lugar debe venir la documentación pero desconozco dónde). Por ejemplo, para Microsoft Jet 4.0 obtuve estos otros valores:

Código:
E_DB_KEYVIOLATION = -105121349;
E_DB_REQUIREDFIELD = -541331061;
Por otro lado, si en el peor de los casos resulta que realmente no entra al evento (y te reitero que primero que nada verifiques muy bien esto) lo que yo haría es olvidarme del proyecto por un momento y comenzar con una aplicación limpia, colocando un AdoConnection, un AdoTable, un DataSource, un DBGrid y nada más. Salvo la cadena de conexión del AdoConnection no cambiar ninguna propiedad y ver qué pasa. Si sí funciona ir cambiando las propiedades que hayas cambiado en el proyecto original (si es que hiciste algún cambio).

Bueno, como verás no es una ayuda muy concreta pero es como yo procedería si tuviera que usar ADO, Access y desconociera ambos-- y tal es el caso

// Saludos

Última edición por roman fecha: 19-10-2003 a las 08:32:21.
Responder Con Cita
 



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 21:43:39.


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
Copyright 1996-2007 Club Delphi