Hola, quisiera pedirles consejo sobre como atacar la situación que planteo más abajo y ante todo, les pido disculpas, ya que al no conocer todas las opciones y posibilidades de la herramienta, consumo demasiado tiempo intentando pensar la mejor forma de solucionar problemas puntuales, y finalmente cuando lo hago, nunca tengo claro si hubiera sido la mejor alternativa:
Situación
- tabla_padre: id, idhijo1, idhijo2, otrodato
- tabla_hijo1: id, fechaini, fechafin, otrodato1
- tabla_hijo2: id, fechaini, fechafin, otrodato2
En realidad, una vez completo, representan un único registro atómico.
Es decir, un registro de la tabla_padre existirá si y solo si, existe uno y solo un registro asociado en tabla_hijo1, y tabla_hijo2.
Alternativa 1
La primer intención, que se me ocurrió, era hacer 2 pantallas, la primera de selección, y la segunda de edición, con un ci y 2 nuevas pantallas, una para editar los datos de tabla_hijo1, y otro para tabla_hijo2. Para esto, utilzaría una relación y setearía min y max filas en las tablas de relación en 1 para todos los campos, y manejaría cualquier cambio en la fuente de datos a través de la relación.
Esta no es la opción que me gustaría tomar, ya que al ser solapas separadas, el usuario pierde la noción de atomicidad implícita.
Alternativa 2
Otra idea, sería tener un cuadro con todos los datos, y en la misma pantalla o en otra de edición, 3 formularios, uno debajo del otro, que se acepten, eliminen o modifiquen en conjunto con eventos dentro del ci controlador.
En este punto, las consultas puntuales son las siguientes:
1) puedo incluir más de un formulario en un ci?
2) debería incluir cada tabla por separado, o mantengo la relación de las tablas?
3) Intuitivamente, me parece que podría utilizar la relación, y 3 formularios, uno arriba del otro… y aplicar todo si fueran distintas solapas… como si fuera la alternativa 1), es decir como si estuvieran en solapas separadas? en este caso definiría en cada formulario un evento modificacion, pero se dispara en que momento? cada vez que edito un ef? porque en ese evento debería hacer el set, y luego en el evento aplicar del ci controlador sincronizar.
Alternativa 3
Un solo cuadro y un solo formulario
En este caso,
1) como podría hacer el guardado de los datos, la recuperación de los mismos para edición y la eliminación atómica?
2) sería mejor seguir utilizando la relación, o 3 datos_tabla por separado y atacarlos a cada uno por separado ante la selección, eliminación, etc en cada evento particular?
Desde ya, MIL GRACIAS!