Mostrar formulario dinamico dentro de otro


([N1] Spicer) #1

Estimados,

Tengo una lista de actividades por realizar, y cada actividad tiene datos que deben ser ingresados en un formulario propio.
Cada form tiene como origen su propia tabla.

Es decir:
Actividad1 - Form1 con origen Tabla1
Actividad2 - Form2 con origen Tabla 2

Lo que quiero hacer es mostrar, de alguna forma, una lista de actividades y que cuando el usuario seleccione una de estas, se muestre a la derecha, el form correspondiente y el usuario pueda ingresar los datos pertinentes. Pensé en hacer esto con vistas de datos, pero como la tabla de origen no es la misma, el método clásico no funciona.

Si lo que estoy pidiendo es una locura, me dicen. Pero las ideas serán enormemente bienvenidas.

Gracias de antemano para todos,


([N4] Infortic) #2

Puedes poner 2 vistas de datos, cada una de una tabla con condición de visibilidad.


([N4] eic) #3

Hola.

Dependiendo del número de actividades y los campos a rellenar, te podría interesar utilizar controles asociados a variables locales y, mediante manejadores de eventos, escribir en el registro de la tabla correspondiente. Eso te permitiría, por ejemplo, usar una pila de formularios, cada formulario con variables locales, mostrando el formulario adecuado según la elección de actividad y luego rellenar los registros mediante código.


([N1] Spicer) #4

Estimados Info y EIC,

Muchas gracias por las sugerencias; ambas son muy buenas ideas y funcionan bien; el punto es que son muchas actividades (35 aproximadamente), y dicho formulario será el más utilizado, por lo cual necesito que funcione rápido.

¿Alguien ha hecho algo similar?

Saludos y gracias nuevamente,


([N4] Infortic) #5

La forma que te puse era por si sólo habían 2 formularios modelo, si tienes mucho es muy ineficiente la técnica.

Yo creo que el caso que expones es lo mismo que ésto:

http://jarboleya.com/2014/12/08/organiza-los-subformularios-con-un-listbox/

Puedes cambiar el formulario mostrado por js, en este caso, la primera vista de datos es un listbox, pero podría ser una rejilla o lo que sea, el tema es que al selecionar una actividad de muestre el formulario adecuado.


([N1] Spicer) #6

Estimado Info,

Me parece que esa es la mejor alternativa. Muy agradecido.

Saludos,


([N1] Spicer) #7

Estimados,

Finalmente logré mi objetivo. Creé un form con un separador de formularios, sin tabla de origen, y sin datos.
Luego, apliqué el script que copio abajo, y voila… resuelto en forma simple y elegante

--------------- INICIO DEL SCRIPT -------------------
// Agrega un TAB al separador

// Leo las variables desde el form (deben estar declaradas previamente)

var nombreFormulario = theRoot.varToString (“FRM_NOMBRE_FORM_CONTROLADOR”);
var tituloTab = theRoot.varToString (“FRM_NOMBRE_TAB”);

// Obtengo el formulario que estoy mostrando
var formularioPrincipal = theRoot.dataView();

//Obtenemos el separador de formularios. SEP_WF_FICHA_GEN es el identificador…
// …que tiene el control sepàrador dentro del formulario principal

var controlSeparador = formularioPrincipal.control(“SEP_WF_FICHA_GEN”);

//Añadimos un subformulario al separador
controlSeparador.addForm(nombreFormulario,tituloTab);

// Actualizo
theRoot.dataView().updateControls();