Sincronizar datos en subformularios


([N1] Spicer) #1

Estimados,

Tengo un formulario con una vista de datos que muestra una rejilla (tabla maestra) y en la parte inferior, un separador de formularios, que a su vez contiene, en la primera pestaña un subformulario y en la segunda, una rejilla.

Lo que no he podido hacer es que al seleccionar un registro de la tabla superior (maestra), actualice los registros del subformulario de la primera pestaña, y que muestre los datos de la tabla submaestra (plurales) en la segunda.

Hasta ahora creé un evento de interfaz que captura el ID de la tabla maestra al cambiar seleccionado, y un manejador de evento que hace lo siguiente:

  • Crea una cesta local de la tabla submaestra

  • Procesa la vista de datos, y lee la ficha seleccionada para obtener el ID

  • Carga los plurales y los mete en la cesta

Lo que me falta son dos cosas:

a) Poder actualizar los datos del subformulario (contiene datos de la tabla maestra)

b) Poder inyectar los plurales de la cesta en el grid ad-hoc que está en la segunda pestaña

Cualquier ayuda la agradeceré muchísimo, esto me tiene varado

 


([N1] Spicer) #2

Ya conseguí el punto (b), ahora sólo me falta el (a)

Además, lo que me pasa ahora es que cuando despliego la rejilla dentro de la pestaña, no muestra el menú de acciones por defecto


([N1] Spicer) #3

Ya me di cuenta lo que pasó… el formulario estaba inactivo (lo copié de otro que dejé inactivo a propósito)

Bueno, ahora sólo me falta el punto (a)


([N4] eic) #4

Hola.

Lo que estás haciendo (una vista de datos con una rejilla, arriba, y otra información abajo) se haría de modo más natural si definieras un multivista, que tendría arriba la rejilla de la tabla maestra, y debajo un formulario de esa propia tabla maestra, con las pestañas adecuadas. La sincronización entre la parte de arriba y la parte de abajo la manejaría el propio multivista, que para eso está. Y además, te permitiría modificar los datos de la tabla maestra, ya que la parte de abajo sería un formulario de la propia tabla maestra, directamente. Ese multivista lo colocas en un formulario sin origen, y ya lo tienes.

 


([N1] Spicer) #5

Estimado Francisco,

Gracias por la ayuda. Hasta donde yo entiendo, el multivista permite sincronizar dos rejillas mediante un proceso sincronizador, y en ese contexto lo he usado mucho, siendo muy útil.

Lo que es una sorpresa para mi, es que permita sincronizar una tabla maestra y un separador de formularios con una pestaña con datos y otra con una rejilla… ¿cómo haría eso? porque por más que intento, en el multivista no me permite elegir formularios.

Gracias nuevamente


([N4] fgomes) #6

Yo uso el multivista con formularios, en mi caso el ultimo item del multivista es un formulario, por lo tanto el ultimo proceso sincronizador debe ser de Origen Ficha y destino Ficha, elegiendo entonces el formulario a enseñar.


([N4] eic) #7

Hola.

Exactamente, lo que te dice Filipe.

Si el proceso sincronizador tiene como salida “Ficha”, te dejará escoger como siguiente objeto del multivista un objeto de ficha (Formulario, por ejemplo).

 


([N1] Anovillo) #8

Buenas,

También podrías dejar la rejilla de arriba y guardarte en una variable global el ítem que selecciones y abajo una multivista con un formulario y la rejilla correspondiente. De esta manera te guardarías en una variable global lo que tuvieras arriba y abajo lo mostrarías en el formulario y a partir de ahí a la rejilla. Aunque quizás esto es un poco más lioso…

Saludos!


([N1] Anovillo) #9

Ok! perdón! Me autoreprocho el patinazo…

Creo que estábais diciendo lo mismo que yo… :slight_smile:


([N1] Spicer) #10

Gracias a todos.

La clave la dio Fran Varona con la frase “Ese multivista lo colocas en un formulario sin origen, y ya lo tienes.”

Ahora (sigo molestando), lo que necesito es poder condicionar la búsqueda que alimenta el multivista, de la siguiente forma:

Alternativa 1: Búsqueda con parámetros predefinidos

Alternativa 2: Búsqueda con parámetros seleccionables por el usuario mediante un formulario ad-hoc

En la toolbar tengo definida una acción, que es “Disparar objetos” y tiene como objeto 1 el formulario. En este formulario está la vista de datos que tiene como objeto 1 la búsqueda y como objeto 2, el multivista.

¿Cómo podría hacer para desplegar los resultados de la búsqueda predefinida o la búsqueda seleccionable en el mismo multivista destino?. Lo que no quiero hacer es tener DOS formularios, uno con cada tipo de búsqueda.

Gracias


([N4] eic) #11

Hola.

Imagino que, hasta ahora, el multivista (que está en una vista de datos) lo alimentas con un proceso/búsqueda, de modo que muestre el resultado de ese proceso/búsqueda.

Lo siguiente que tienes que aprender es que el contenido de una vista de datos se puede manipular desde el propio formulario donde está. Es decir: en un evento del formulario sin origen, puedes hacer una búsqueda (la que quieras), y el resultado “enviarlo” a la vista de datos, para que aparezca en el multivista. Eso te da una gran flexibilidad. De hecho, en ocasiones, pongo un proceso vacío que alimente al multivista, y ya desde el propio formulario decido qué le envío para mostrar.

Básicamente, el evento del formulario que contiene la vista de datos tiene que:

  • Crear una cesta local de la tabla en la que se basa la vista de datos

  • Realizar una búsqueda (o lo que sea), para llenar la cesta

  • Interfaz: Procesar (la vista de datos)

  • Cortar lista (0) -> para que vacíe lo que se estaba viendo hasta ese momento

  • Cesta: agregar a la lista en curso (nombre_cesta)

Tienes un ejemplo aquí:

http://velneo.es/velneo-open-app/tutor-de-vista-de-datos-avanzada/

Saludos,

 


([N1] Spicer) #12

EXTRAORDINARIO!

Eres mi ídolo…!

Mil gracias