FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
¡Hola a todos!
Basti: ApplyUpdates sí genera excepciones pero las canaliza todas al evento OnReconcileError. Es ahí donde David puede mostrar el mensaje al usuario. Darwin: El código de Eliseo (Egostar) tendrá exactamente los mismos resultados que el tuyo, aunque quedaría mejor así:
Un abrazo cometido. Al González. |
#2
|
|||
|
|||
Cita:
__________________
Saludos. |
#3
|
||||
|
||||
Algunos apuntes sobre las transacciones al usar TClientDataSet
¡Hola a todos!
Cita:
Cita:
Ciertamente no eleva (Raise) tal excepción, pero si envía el objeto como parámetro al evento OnReconcileError (línea 1850):
Por lo tanto es correcto que tal excepción no sale elevada fuera del método ApplyUpdates, como bien lo ilustras en este código donde me permití agregar una línea al comentario: Cita:
Cita:
Dejar que el proveedor maneje la transacción no es útil cuando queremos involucrar dos o más conjuntos de datos clientes en una sola transacción, como es el caso actual de David, donde hace bien en iniciar él mismo la transacción de manera explícita. Sin embargo esta útil opción tiene un precio incómodo: Si Client1.ApplyUpdates(0) devuelve 0 y ClientDetalle.ApplyUpdates(0) no, es claro que la transacción ha de ser revertida (Rollback) en el Else. Pero Client1 se quedará con la idea de que los datos aplicados siguen vigentes (su propiedad ChangeCount habrá sido restablecida a 0). Esto obliga a emplear un Client1.Refresh o algún mecanismo similar para reubicar a Client1 en la realidad; y si lo utilizado para ello fue una llamada al método Refresh, ¿qué pasa con lo que ya se había asignado al registro? A menos que algo se me escape, tales datos se pierden. Claro, siempre será posible conservar una copia de los datos en alguna variable o algo por el estilo (incluso esto puede convertirse en un pretexto más para los dataawarefóbicos), finalmente Delphi, a diferencia de otros lenguajes, tiene solución para todo. Como comentario extra, hace tiempo vengo agregando nuevas características a derivados de TClientDataSet, TDataSetProvider y otros componentes de acceso a datos. Actualmente trabajo en un mecanismo que permitirá conservar la propiedad ChangeCount aún después de haber hecho un ApplyUpdates exitoso, esto con el fin de manejar varios conjuntos de datos clientes en el contexto de una transacción del servidor de manera más sencilla y consistente. Un abrazo transaccional. Al González. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema manejando excepciones | David | OOP | 1 | 28-07-2006 19:17:48 |
Problema con excepciones | soto | Varios | 5 | 15-12-2005 18:26:40 |
Problema con ClientDataSet | kaopectate | Conexión con bases de datos | 3 | 13-02-2005 22:08:57 |
Problema con las Excepciones y OO | kueik | Varios | 4 | 18-06-2004 14:05:34 |
Problema de ClientDAtaset con xml | carlosmoralesm | Internet | 6 | 03-03-2004 21:46:16 |
|