Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #20  
Antiguo 13-01-2008
canelita canelita is offline
Miembro
 
Registrado: ago 2007
Ubicación: Cucuta
Posts: 18
Poder: 0
canelita Va por buen camino
Documentacion en Español sobre TCLientDataset y su Provide

Cordial saludo.

Me gustaria una explicacion profunda del componente Tlientdataset

Gracias

Cita:
Empezado por Al González Ver Mensaje
¡Hola de nuevo!


Hay varias soluciones para esto. En lo personal empleo un sistema de objetos "save points" subordinados que reaccionan en cadena, pero no creo que sea necesario aplicar algo tan complejo en este caso.

En realidad no es demasiado el esfuerzo de escribir unos cuantos "dtXXX.MergeChangeLog; / dtXXX.CancelUpdates;" por forma, dado el beneficio que obtienes con la nueva implementación de ApplyUpdates, pero comprendo tu punto de vista bibliotecario: siempre puede hacerse más.

Como lo veo, tienes dos opciones relativamente fáciles de implementar:

1. Diseñar tus formas de captura bajo un esquema de herencia visual, colocando en tu "forma transaccional base" el código que será común para todas las formas de captura, incluyendo esto de las llamadas a MergeChangeLog y CancelUpdates (los "Commit / Rollback" del lado cliente). En ello podrás emplear bucles que recorran todos los conjuntos de datos usados por la forma (considerando que por cada uno tuvieses un TDataSource dentro de la misma).

2. Añadir un poquito más de código a tu nuevo método ApplyUpdates, haciendo que el conjunto de datos en cuestión (Self) se agregue a una lista global llamada "TransDataSets" o algo por el estilo. Cada vez que quieras cometer o revertir todo el grupo de conjuntos de datos involucrados en una transacción, sólo tendrías que recorrer dicha lista y llamar al método MergeChangeLog / CancelUpdates por cada elemento de la misma.

Te recomendaría más la opción #2. Y considerando que estás dispuesto a hacer de tu nueva clase un componente derivado (en lugar de una clase interpuesta), lo cual no es mala idea dada la importancia de la nueva funcionalidad, creo que, con el propósito antes mencionado, convendría crear también una clase TTransClientDataSets, derivada de TList o de TObjectList, definiéndole dos métodos para hacer el MergeChangeLog / CancelUpdates sobre todos los conjuntos de datos contenidos.

Espero te sea de utilidad y sirva de orientación. Te invito a publicar el código final de tus nuevas clases, para compartir en su totalidad esta interesante y muy útil experiencia orientada a objetos con nuestros compañeros.

Seguimos en contacto.

Al González.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cache con idhttp mak8888 Internet 0 10-09-2007 12:38:44
tamaño de cache de bd omarbrdz Firebird e Interbase 3 14-09-2005 15:26:39
IBDataset actualizacion en caché Osorio Conexión con bases de datos 0 07-07-2005 19:06:07
Problemas con la cache usando IBX glopez Firebird e Interbase 5 01-09-2004 17:07:52
Transacciones y/o cache kayetano MySQL 1 25-06-2003 20:30:46


La franja horaria es GMT +2. Ahora son las 07:08:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi