Seguimos el experimento, intentado satisfacer nuestra curiosidad. :-)

Vamos a hacer lo siguiente:

* En el modulo de datos eliminamos los dos componentes TClientDataSet que contienen los detalles. Es decir, cdsComposicion y cdsComponentes desaparecen. Tambien eliminamos todos los campos persistentes del dataset maestro cdsArticulos Logicamente, una vez hecho esto, los dos componentes TDataSource ligados a los mismos (a cdsComposicion y a cdsComponentes) ahora han perdido las referencias a los dataset y apuntan a nil.

Cambio en el módulo de datos

* Vamos a añadir en el evento OnCreate del modulo principal un par de lineas para suplir las dos asignaciones perdidas.

procedure TMainTest.FormCreate(Sender: TObject);
begin
dsComposicion.DataSet:=
   TDataSetField(dsArticulos.DataSet.FieldByName('qComposicion')).NestedDataSet;
    
 dsComponentes.DataSet:=
   TDataSetField(dsComposicion.DataSet.FieldByName('qComponente')).NestedDataSet;
end;

El resultado: Todo sigue igual que estaba y podemos ver los datos en las rejillas de datos (tanto en el dataset maestro como en los detalles) porque la existencia de cdsComposicion y cdsComponentes parece meramente anecdótica.

Podeis verlo por vosotros mismos si lo ejecutais.

Segunda ejecución

Así que una de las primeras conclusiones o reflexiones al vuelo de estos comentarios es que nuestro dataset maestro (cdsArticulos) es el jefazo del grupo, nuestro hombre importante y el resto de detalles son tan solo una ventana a lo que se está cociendo en su interior. Son meros hombres de paja o si se prefiere, actores de relleno que hacen que el batallon de romanos tenga mas credibilidad. Lo cual no quiere decir para nada que se deban eliminar pues son una ayuda necesaria en la parte de diseño de nuestra desarrollo. Solo hablo de tomar conciencia de un detalle que nos puede pasar desapercibido, lo cual sí parece importante en el transfondo de la curiosidad que mueve este grupo de entradas.

La tercera parte tendrá que ver sobre el delta y de alguna forma, la reflexión casi cae por si misma, por su propio peso, si haceis cualquier modificación en uno de los registros, y tras el oportuno post, es pulsado el boton VerDelta. La asignación en:

procedure Tdatos.Verdelta;
begin
  try
    Delta.Data := cdsArticulos.Delta;
  except
    Delta.Data := Null;
  end;
end;

nos permitirá visualizar el esquema conceptual y fisico que usa nuestro proveedor de datos para generar las oportunas sentencias sql, es decir el registro de actualizaciones. Esa será nuestra tercera parada. Tambien de cuando en cuando hay que dormir… :-)

Rate: 0

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *


7 + seis =

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree