Herencia instancia datos


([N1] BIMIND IT Consulting) #1

Hola!

Estoy haciendo una aplicación basándome en vBase y me gustaría poder heredar las instancias de datos creando nuevos campos sin modificar las estructuras de las tablas iniciales. Así tengo las instancias de vBase con los campos más básicos que puedo usar en cualquier aplicación y jugando con la herencia dotar de más campos para una aplicación específica. Seria una relación 1 a 1 entre dos tablas o algo así.

Si alguien me puede echar una mano o indicarme donde puedo sacar la información necesaria para hacerlo me sería de gran ayuda.

Muchas gracias,
Oriol Serra


([N4] apinna.winmotor) #2

Hola Oriol,

si te he entendido bien digamos que quieres "ampliar" una tabla en una tabla distinta, para entendernos pongamos que quieres crear nuevos campos relativos a entidades sin tocar la estructura de entidades.

En principio es fácil, sólo tienes que crear una nueva tabla "AMPLIACION_ENTIDADES" que incluya un campo "enlazado a maestro" y que apunte a entidades. Además del campo crea también un índice sobre entidades y en entidades se creará un plural hacia "AMPLIACIÓN ENTIDADES" (para esto tienes que guardar el proyecto y volverlo a abrir).

En un segundo paso crea en Entidades un campo "Singular de plural por posición" que apunte al plural creado y se resuelva por la posición 1 (sólo habrá en AMPLIACIONES_ENTIDADES un registro por entidad). Con esto, desde cualquier punto de V7 podrás leer desde la tabla de entidades sus campos y los de la tabla heredada.

Esto luego tiene matices que debes controlar si ejecutas procesos en tercer plano y la tabla "AMPLIACION_ENTIDADES" está en un proyecto de datos superior al de entidades.

Espero que te sirva, un saludo


([N1] aztecmexico) #3

Hola, me surgio la duda y revisando la ayuda del vDevelop se indica que el tipo de enlace Singular de Plural por Posición:

NOTA: Este tipo de enlace solamente podrá ser establecido con tablas que se encuentren en un mismo proyecto.

O sea, si la tabla de ampliación queda en el mismo proyecto que la de entidades no habrá problema, pero si la creas en el nuevo proyecto de datos no vas a poder aplicar este enlace.

Creo que este tema merece un análisis más detallado, dejame echarle coco y al rato comparto lo que se me ocurrió, (a nivel teórico) y si alcanza el tiempo del día pues haré algunas pruebas y comparto lo que me encuentre, si no, se los debo para otro dia

Saludos.

Martin Ibarra.


([N4] apinna.winmotor) #4

Hola Martín,

yo tengo montadas soluciones con ese tipo de enlace y la limitación que tienen es la que defino arriba, si la tabla plural está en un proyecto de datos superior, las ejecuciones en tercer plano no resuelven el dato, en primer plano si.

Saludos


([N4] velavisual) #5

@martin @apinna
.
Me resulta muy importante este post por los problemas que puedan darnos los punteros en este tipo de situación.
.
Cierto es que el manual nos dice una cosa y, cierto es que @apinna lo usa en sus soluciones y al parecer funciona, pero con la limitación que él nos cuenta.
.
Yo os pediría, por favor, que esta incógnita la paséis a soporte y os lo aclare con más detalle.
No sea que usemos algo que internamente pueda o no estar ocasionando algún tipo de error en nuestras tablas.
.
Si posteriormente queréis poner el resultado de vuestra consulta aquí, tod@s os lo agradeceríamos.
.
.
saludos
Antonio Vela
http://www.velavisual.com


([N1] aztecmexico) #6

Hoy solo me dio tiempo para realizar este pequeño esquema que a continuación muestro, posteriormente publicaré los aspectos que considero analizar y tomar en cuenta, además de probarlos para observar los resultados, comportamientos, qué se puede y qué no se puede hacer.

@apinna, entiendo que tengas en funcionamiento soluciones con los enlaces en comento, ¿bug no detectado? (lo digo por lo que atinadamente menciona Velavisual), no vaya a ser que en una revisión o nueva versión se den cuenta de lo que dice el manual y lo que en realidad sucede, lo "corrijan" y se vaya al traste tu aplicación.

Por lo poco que he leído y lo que entiendo del concepto de cajas eso no debería ser posible, cuando menos no con ese tipo de enlace, independientemente de si en tercer plano no funciona y en primer plano si, pero si te funciona a mi me da gusto y pues mejor que lo ajustaran para que tambien funcionara en tercer plano, pero vamos viendo que nos arrojan nuestras pruebas internas y con gusto lo compartimos.

Así de botepronto es lo que entiendo, lo más seguro es que sea yo el norteado, pero echando a perder se aprende, y sobre todo con los comentarios y experiencias de los demás.

Un Saludo.

Martin Ibarra.

[attachment=23019,1777]


([N4] apinna.winmotor) #7

@Martin y @Velavisual

precisamente quería plantear a Velneo como idea el resolver esta incidencia, me parece perdemos control y rigor en la base de datos cuando un campo se comporta de manera distinta en primer y en tercer plano. Como os digo yo ya me topé con este problema a mediados del año pasado, lo consultamos en soporte y el asunto se quedó en lo que ya os he comentado. Por la estructura de mi solución he tenido que mantener estos campos y controlar la diferencia de comportamiento pero os agradecería muchísimo si hacéis vuestras pruebas para corroborarlo y apoyáis luego la petición a Velneo.

Saludos


([N3] blavan) #8

Interesante hilo.
Yo pregunto si lo que se trata es de no modificar la estructura de vbase, pués no la modifiquemos y trabajaremos siempre desde la tabla ampliada, es decir desde la tabla de "mi proyecto", eso obliga a hacer un alta a maestro y mantener siempre la relación uno a uno, pero que problemas encontrais trabajando sólo desde la tabla ampliada en "mi proyecto"?


([N1] BIMIND IT Consulting) #9

Gracias a todos por vuestras respuestas!!

He estado probando todas las soluciones que he estado leyendo pero no consigo dar con la funcionalidad esperada.

Tal y como me habeis indicado he creado una tabla historica "ampliacion_entidades" con un enlace maestro a entidaces, un ídice único sobre el campo maestro, y en entidades he creador el enlace plural y el campo Singular de plural por posición.

Y ahora cuando creo un formulario de alta con origen la tabla entidades y agrego el campo vinculado a "aplicacion_entidades" no se me guarda el valor. No he creado ningún evento y lo hago directamente con el botón aceptar.

Que es lo que me falta?

Gracias!
Oriol


([N4] apinna.winmotor) #10

Hola Oriol,

no entiendo muy bien cómo lo has montado pero te aclaro :

a) El enlace plural de entidades no lo has podido crear, lo crea sólo V7
b) El campo enlazado dentro de entidades "singular de plural por posición" si lo tienes que crear y definir que apunta a la tabla "AMPLIACION_ENTIDADES"

Luego a nivel interface para aclararte prueba primero lo siguiente:

a) Crea una rejilla dentro del formulario entidades para que presente los registros de "AMPLIACION_ENTIDADES" (sólo presentará 1)
b) relaciona esta rejilla en sus formularios con uno para "AMPLIACIÓN_ENTIDADES" formulario alta
c) Si dentro de una entidad grabas un registro en esta rejilla se tiene que quedar vinculado a su "entidad madre" automáticamente.

Este es un sistema básico, para hacerlo directamente por formularios lo suyo es utilizar eventos que "alimenten" el campo "entidad" en tu formulario de "AMPLIACION_ENTIDADES".

Espero que te sirva, un saludo






([N1] BIMIND IT Consulting) #11

Gracias Apinna! Ahora ya me funciona! Y me ha funcionado con el sistema básico. Lo único que no es muy funcional ya que tengo que entrar en el registro de la rejilla para modificar los campos de "ampliacion_entidades"

La segunda opción que me comentabas en el que se debería crear un farmulario "ampliacion_entidades" que mediante eventos se alimentara del campo entidades. Te puedes explicar un poco más pues creo que es lo que necesito para que parezca que todo forma parte de la misma tabla sin usar rejillas u otros objetos.

Mil gracias,
Oriol






([N4] apinna.winmotor) #12

Hola Oriol,

perdona el despiste, hay un comando de acción específico para hacer esto dentro del formulario de entidades:

- Crea un botón en el formulario entidades
* Comando : edición de maestro (internamente para el velneo, el enlace a singular de plural por posición lo considera también maestro)
* Campo : el enlace singular de plural que hayas definido en entidades y que apunte a "AMPLIACION_ENTIDADES"
* Objeto : el formulario de AMPLIACION ENTIDADES

Eso sí, esto te funcionará en la consulta / modificación de entidades, para el alta puedes :

- Crea un evento relacionado al botón "Aceptar" (lógicamente primero una conexión de evento disparada por ese botón )
- En el evento utiliza la instruciión "Interfaz - aceptar" para que grabe la entidad y luego crea la instrucción "Crear ficha en memoria" relacionada a AMPIACION ENTIDADES y pasándole el código de la entidad, luego "pedir formulario" y finalmente "Alta de ficha".

Espero que te sirva


([N1] BIMIND IT Consulting) #13

Gracias por todo! La verdad es que esto de la herencia como teoría esta muy bien pero para aplicarlo y sobretodo en la herencia de datos es poco intuitivo, desde mi humilde opinión.

Gracias de nuevo!
Oriol Serra