![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#2
|
||||
|
||||
|
Hola Manuel.
Disculpa que no respondiera antes a tus mensajes. Me parece bien que hayas abierto este nuevo hilo para tratar de resolver entre los compañeros las inquietudes que te aquejan. ![]() Pero hay que ir por partes, porque es un tema amplio el que planteas. Además pienso que puedes no tener muy claros algunos conceptos. Decir también que mi experiencia con el nuevo DataSnap (Delphi 2009 en adelante) es todavía poca, pero a ver si podemos ayudar. Conmigo ten paciencia porque dispongo de poco tiempo para los próximos días. Por tu parte debes estar dispuesto a dedicar lo que sea necesario a comprender y poner en práctica todo lo que discurra aquí. Creo conocer un poco la clase TClientDataSet, digamos que es el área donde me siento más seguro dentro de todo este terreno, pero hay compañeros que dominan mejor la práctica de montar sistemas multicapa con DataSnap. A estos los animo a aportar su conocimiento, porque seguro que no sólo a Maniches le servirá. Analicemos el siguiente punto (evitemos los demás hasta que éste quede resuelto): Cita:
Cita:
El mismo método ApplyUpdates se encarga de llamar a Reconcile cuando el servidor rechaza alguno de los cambios. Reconcile tiene varias formas de tratar con esos cambios rechazados, entre ellas disparar el evento OnReconcileError para que sea el programa (el programador de la aplicación) quien determine qué hacer (ignorar, corregir el campo en cuestión y reintentar, etcétera). Reconcile y OnReconcileError no sirven para "refrescar" los registros que tiene en memoria el conjunto de datos cliente. No es ese su propósito. Varios motores soportan la devolución de datos automática tras una inserción (Insert Into) o actualización (Update). Esto podría ayudarte a "refrescar" en memoria los cambios que adicionalmente el servidor haya realizado mediante disparadores Before Insert y Before Update, pero desconozco qué tan fácil sería montarlo sobre los mecanismos habituales de comunicación TDataSetProvider-TClientDataSet, además, también dependerá de la conexión que uses (ADO, dbExpress, IBX) y cómo ésta última soporte el "returning" de los Inserts y Updates en tu versión de Delphi (yo no he revisado). Imagino que no ha de ser imposible canalizar esa devolución del servidor hasta la aplicación cliente, para que ésta actualice su "caché" de registros (TClientDataSets), ya que tanto TDataSetProvider como TClientDataSet posibilitan la transmisión de todo tipo de información. Pero antes de intentar ese camino, considera que hay por lo menos otra forma en que un conjunto de datos cliente puede refrescar los registros que ha enviado al servidor, sin tener que hacer un completo Refresh o Close + Open. Consiste en consultar con un TClientDataSet auxiliar aquellos registros que nos interesan, y luego copiarlos al primer TClientDataSet. En este hilo se trató el tema. Creo que te puede servir. Cierto, eso supone volver a hacer una consulta al Servidor, pero al menos no traes de él todos los registros que ya tienes en memoria, sino solamente los que acabas de mandar, reduciendo significativamente el peso de la solicitud. Nos leemos pronto, saludos... Al González. |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Conectar varias Bases de Datos con Server DataSnap | gcaffe | Providers | 5 | 22-05-2016 01:55:09 |
| DataSnap XE3 - Actualización masiva de datasets con datasnap server. | Maniches | Conexión con bases de datos | 0 | 08-11-2012 07:11:39 |
| DataSnap Server Remoto - Delphi XE | mrh_peru | Providers | 4 | 30-10-2011 03:51:06 |
| datasnap para sql server??? | _CALI | Conexión con bases de datos | 5 | 25-04-2011 18:49:04 |
| Actualizacion masiva con trigger | lledesma | SQL | 1 | 22-04-2009 23:24:09 |
|