Duda existencial sobre herencia


([N4] Fran) #1

Buenas tardes:

Estoy desarrollando una pequeña aplicación de gestión de los vServers que tengo instalados en nuestros clientes.
Se compone, por el momento, de una solución y 4 cajas distintas: Maestros (datos y objetos) y vServers (datos y objetos).
vServers hereda de la de maestros que contiene, p. ej., los clientes y las ciudades en donde tengo instalados los vServers.
El marco principal está en la caja de vServers y contiene un menú desde el que se accede a los objetos visuales y tablas de la caja de datos de Maestros sin problemas. También se accede a los objetos visuales y tablas de la caja de vServers... todo junto en el mismo marco y sin problemas.
Hasta aqui bien.

Ahora el tema está en que quiero añadir una "rejilla de histórico" de los vServers que le corresponden en el formulario de Clientes... y aqui ya no puedo.
Añado un control objeto que debería ejecutar un proceso que cargue el plural de vServers desde la ficha del Cliente y añada a la salida la lista de vServers... y aqui está el problema: Al proceso no le puedo indicar que la tabla de destino es vServers, porque no aparece en la lista de tablas disponibles.

¿Es esto debido a que está en otra caja?
La caja de vServers no la puedo heredar desde la de maestros, porque no aparece en la lista de cajas disponibles. Luego, ¿como se hace esto?.
Podría crear nuevos objetos visuales de la tabla de clientes en la caja de vServers... esto en un principio debería funcionar, ya que tengo todas las tablas accesibles en la caja de vServers (no lo he hecho todavía)... pero en ese caso, me estoy cargando parte de la potencia de la herencia, ya que estoy duplicando objetos visuales.
¿Estoy entendiendo mal algo? ¿Se hace esto de otra forma en v7?

Desasnadme, please.

Un saludo,
Fran.


([N4] fgutierrez.velneo) #2

El problema que tienes es sencillo, aunque se divide en dos:

Desde una caja de aplicación, en general no tendrás acceso a todos los elementos de una caja si no la tienes heredada. En el caso de las cajas de datos es más complejo porque sí tienes acceso al contenido de las tablas si vienen heredadas de otra caja de datos. Esto es normal, ya que puedo querer mostrar, por ejemplo, un dato de un maestro que tengo enlazado, pero está en otra caja que no tengo heredada en mi caja de aplicación directamente, pero sí la tiene mi caja de datos.

Pero lo habitual sería que si necesitas algo de una caja, la heredes, si no, normalmente no lo tendrás accesible, ya que la herencia de forma recursiva no se da, tampoco la herencia recíproca (si tengo una caja A que hereda una caja B, no implica que la caja B herede la caja A). En este caso, necesitas por tanto que una herede de la otra de forma recíproca. Pero yo creo que no debes hacerlo ahí, si no que debes hacerlo en la caja que hereda, que conoce todo lo necesario.

Por otro lado, el problema de la selección de la herencia se debe a que sólo se presentan como heredables las cajas que estén cargadas en memoria. Esto es así para evitar que, cuando vayas a heredar, no te aparezcan todas las cajas de un servidor o una solución, que pueden ser muchas.

Espero haberme explicado. Y de desasnar nada. Es un tema muy interesante del que seguramente hablaremos mucho.

Un saludo.


([N4] Fran) #3

Gracias Tito:

Ayer tarde ya intenté hacer que la caja de datos de Maestros heredase la de vServers, para poder mostrar los plurales desde los formularios de los maestros... pero no lo conseguí, ya que no aparecía disponible ninguna caja para heredar.

Hoy, dándole vueltas, lo he conseguido... pero no se muy bien como. ¿Es necesario, p. ej., heradar las cajas de objetos antes de poder heredar las de datos?... o ¿es que al heredar una caja de datos (maestros) desde otra (vServers) sus correspondientes cajas de objetos relacionadas también se auto-heredan?

Ya digo que no sabría explicar como he conseguido establecer la herencia en ambos sentidos, ya que he tenido que dar varias vueltas para conseguirlo. ¿Cuál sería el procedimiento correcto para hacer esto?

Un saludo,
Fran.


([N4] fgutierrez.velneo) #4

¿Puede ser que intentaras seleccionar la herencia en la creación de la caja? Hay un bug que no permite heredar en la creación de la caja, si no que has de realizarlo después, cuando modificas la caja una vez aceptado el diálogo de creación, editando de nuevo las propiedades de a caja.

[url url=heredar-caja-de-datos]http://v7.velneo.es/foros/topic/heredar-caja-de-datos[/url]


([N4] Fran) #5

Buenos dias Tito:

No es por eso, ya que las cajas las había creado hace unos dias.

Si tengo tiempo, intentaré reproducirlo otra vez... asi me voy aclarando las ideas.

Un saludo,
Fran.


([N4] fgutierrez.velneo) #6

La herencia recíproca está limitada, ya que si realmente se tiene que dar ese caso, o mueves todos los objetos a la misma caja, o bien creas una caja por encima que maneje todas las cajas implicadas, en la que tienes ya toda la información. Como te decíamos antes, otra opción es que todo lo que necesites, lo hagas en la caja que más conoce.

Seguramente te haya dejado establecer la herencia al no tener cargada alguna de las cajas que limitaría la reciprocidad.

Un saludo.


([N4] Fran) #7

Ok. Gracias Tito.

Tiene pinta de ser algo así. Al ir moviéndome por las cajas intentando heredar, de repente he podido hacerlo.

Os daré bastante la lata con temas de herencia, cajas, formas de proceder, etc durante el curso de este mes en Vigo... todo esto es nuevo y es imprescindible entenderlo bien, ya que es la base de los desarrollos en v7.

De hecho, se me está ocurriendo una sugerencia que voy postear en el foro de ideas.

Un saludo,
Fran.


([N4] fgutierrez.velneo) #8

Ya he visto la sugerencia. Como te he dicho, este tema va a estar en el centro de muchas conversaciones en el futuro.

Un saludo.