Cómo crear un formulario genérico con formularios dinámicos

Traducido automáticamente de Deepl

Imagine que su base de datos contiene varias tablas de tipos o categorías. Estas tablas son muy sencillas, a menudo con sólo un identificador y un campo de texto. A modo de demostración, supongamos que se trata de una base de datos de gestión de calzado. Para calificar los productos, tenemos que definir su tipo, color, patrón, material, temporada, etc.

Es engorroso gestionar cada una de estas tablas en un formulario de lista y un formulario de entrada y métodos asociados. En este caso, el uso de un formulario genérico es esencial para evitar la duplicación y simplificar el mantenimiento.

Y ahí es donde los formularios dinámicos y los punteros JSON son muy útiles.

En esta entrada del blog, verás una posible forma de construir formularios genéricos.

Ejemplo de base de datos

Con esta base de datos, puedes abrir cinco diálogos diferentes, como se muestra a continuación. Pero si vuelve al modo de diseño, notará que no puede encontrar ningún formulario en el Explorador 4D…

Entonces, ¿cómo se crean estos formularios?

En los tres pasos que se describen a continuación:

1. Primero, creamos un formulario de lista que guardamos en un archivo JSON. Para la información específica de la tabla y los campos, utilizamos punteros JSON. Por ejemplo, digamos que queremos escribir el nombre de la tabla en el título de la ventana. En el formulario dinámico, sólo tenemos que introducirlo:

"windowTitle": { "$ref": "#/info/table" }

Aquí hay otro ejemplo, en el cuadro de lista, queremos definir la fuente de datos de la columna, así que escribimos:

"dataSource": { "$ref": "#/info/field1" }

2. Luego, en tiempo de ejecución, cuando el usuario hace clic en el elemento del menú, inyectamos un objeto que define la tabla, con los campos que el usuario ha elegido.

C_OBJECT($o;$info)
$info :=New object("table";$table; "field1";"["+$table+"]"+"ID"; "field2";"["+$table+"]"+"Name")
$o :=JSON Parse(Document to text("RESOURCES/Form/CategoryOutputForm.json")
$o .info:=$info

3. Para abrir el formulario, no se requiere nada excepcional, sólo utilizar el Open form window comando. Lo único que hay que recordar es que 4D resuelve los punteros JSON al llamar al Open form window comando:

$ref:=Open form window($o;Plain form window)

Lo mismo se puede hacer con el formulario de entrada. ¡Y ahora pruébalo por ti mismo!

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.