Por curiosidad (y Parte III)

Nos habiamos quedado en la propiedad Delta…

Tanto la propiedad Data como Delta se definen como OleVariants, y se organizan internamente como un array de bytes, y es esta característica la que va a dotar de flexibilidad a las dos estructuras, que soportaran por un lado los datos, el contenido real, en el caso de la propiedad Data, y un registro de actualizaciones que representa a la propiedad Delta. Dicho registro, logicamente es de solo lectura, dado que es la unica forma de garantizar que es tan solo manipulable por el propio dataset. Tambien es por esa razón, ya que no nos es permitido modificarlo, es por la que existen metodos que nos permiten limpiar esa cache de datos que contiene los registros de cambios.

Pero lo mejor es que lo veamos con unos cambios. Lo primero que he hecho es modificar el navegador de articulos para que nos deje insertar, habiltando todas las opciones. Como solo vamos a poner nuestra atención en la tabla de articulos nos podemos olvidar de los detalles y del mecanismo para transmitir el valor a las claves ajenas desde la inserción del articulo. Sobre este punto, yo os volvería a remitir a los cursos de Ian Marteens, accesibles desde su web a un precio razonable. Esto con independencia de que podamos mas adelante comentar este punto. El framework que desarrolla Martens en cada capitulo de esos cursos aborda una buena cantidad de detalles necesarios para trabajar con el esquema DataSnap, tanto a dos como a mas capas.

Os propongo unos cambios en los datos de la tabla articulos. Los hago y vemos los resultados:

* Añadimos un registro a la tabla articulos.
Articulo Descripcion
(Valor nuevo) A0006 Articulo 0006
* Modificamos el articulo con codigo A0005.
Articulo Descripcion
(Valor anterior) A0005 Articulo 0005
(Valor nuevo) Art5 Otra descripcion
* Eliminamos tambien el artículo con codigo A0002.
Articulo Descripcion
(Valor anterior) A0002 Articulo 0002

verdelta

La rejilla inferior os muestra el contenido del registro de actualizaciones. La estructura es identica a nivel de campos, a la que contiene la propiedad Data, como ya hemos comentado. Pero en el delta, por cada registro existente en el data, pueden existir máximo un par de registros vinculados a éste. Segun el caso, ya que para las inserciones o los borrados tan solo necesitamos un registro y mantener en algun «sitio» algo que nos diga si es un borrado o una inserción (en ese punto interviene UpdateStatus con los valores [usModified, usInserted, usDeleted]). En el caso de las modificiones, el primero registro representa el contenido original y el segundo los nuevos valores que toma.

Si yo modificara repetidamente el registro correspondiente al articulo A0005, los cambios sobrescribirian repetidamente el segundo integrante del par, lo cual no es ni bueno ni malo, pero si es esclarecedor, si en algun momento piensas, al revertir los cambios, un comportamiento similar al de cualquier deshacer (ej Word en office) de las aplicaciones mas habituales.

Y retomando ya el motivo que originó estas tres entradas, ahora que ya estamos en contexto de poder razonarlo, parece dificil encontrar la forma de generar un metodo que de forma limpia y sencilla provoque el refresco de uno de los detalles cualquiera sin tener que liarse a crear nuevos conjuntos de datos auxiliares que invoquen en un segundo plano el contenido a importar. Quiero decir que no parece sencillo añadir un nuevo metodo o una nueva función que nos permita decirle:
– ¡Oye, majo!, que no quiero los detalles de la tabla composicion. Haga Vd el favor de mostrarme los valores correctos…

Y el problema en mi opinión (y como siempre digo es mi opinión y no tiene porque coincidir ni ser acertada) es el diseño en bloque de ambas cachés. Si tuviera que buscar una analogia quizás lo compararia a esas muñecas rusas que nunca sabes por el exterior cuantas van a contener salvo que las vayas abriendo de una en una hasta llegar hasta la que tu deseas.

munecas_rusas

Nunca llueve a gusto de todos, decía mi padre. Así que me queda la pregunta si hubiera podido existir una alternativa que hubiera contemplado que estas cachés se hubieran repartido de forma equitativa a cada uno de los componentes ClientDataSet, dejando que cada palo hubiera aguantado su vela.

Ni idea… 😦

Un comentario sobre “Por curiosidad (y Parte III)

Agrega el tuyo

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Blog de WordPress.com.

Subir ↑

Marina Casado

Escritora y Doctora en Literatura Española. Periodista cultural. Madrid, España

Sigo aqui

Mi rincon del cuadrilatero

Recetas y consejos nutricionales

Indicadas para personas con diabetes, recomendadas para todos.

¡Buen camino!

ANÉCDOTAS Y REFLEXIONES SOBRE UN VIAJE A SANTIAGO…

https://lfgonzalez.visiblogs.com/

Algunas reflexiones y comentarios sobre Delphi

It's All About Code!

A blog about Delphi, C++ Builder and related technologies...

The Podcast at Delphi.org

The Podcast about the Delphi programming language, tools, news and community.

Blog de Carlos G

Algunas reflexiones y comentarios sobre Delphi

The Road to Delphi

Delphi - Free Pascal - Oxygene

La web de Seoane

Algunas reflexiones y comentarios sobre Delphi

El blog de cadetill

Cosas de programación....... y de la vida

Delphi-losophy

A Lover of Delphic Wisdom

Delphi en Movimiento

Algunas reflexiones y comentarios sobre Delphi

marcocantu.blog

Algunas reflexiones y comentarios sobre Delphi

Press F9

Algunas reflexiones y comentarios sobre Delphi

El blog de jachguate

Un blog sobre tecnología y la vida en general

A %d blogueros les gusta esto: