![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
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; 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 sí 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; 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. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|