Al desarrollar aplicaciones de Bases de Datos, es necesario programar los formularios necesarios para darle mantenimiento a las diferentes tablas que guardan la información del sistema. Cuando se tienen varias decenas o cientos de tablas, crear y mantener igual cantidad de formularios se convierte en una tarea de programación y mantenimiento bastante complicada. Muchos desarrolladores optan por tener un “formulario machote” base, copiar y pegar para cada caso, otros, utilizan clases, pero todos terminan con una cantidad de formularios importante en su sistema. Utilizar una técnica de Formularios Dinámicos, facilita el desarrollo y mantenimiento respectivos, al generar un único formulario capaz de Insertar, Modificar y Eliminar registros de cualquier tabla del sistema.
Un formulario estandar
Uno de los principales factores de éxito de un sistema de información en el mercado, a parte de que cumpla con su objetivo, es que sea de fácil uso. Para lograr esto, el diseño de la aplicación debe considerar un modelo de funcionamiento consistente a lo largo de todo el sistema: Mismos colores, misma forma de elementos como botones, campos, títulos, etc.
Este concepto toma especial relevancia en el caso de formularios para dar mantenimiento a la información de una base de datos. Estos deben ser prácticamente idénticos, de manera que si el usuario aprende a utilizar uno, ya sabrá utilizar todo el sistema.
Iniciemos considerando las partes mas comunes de un formulario:
Siguiendo el principio de dar consistencia al sistema a desarrollar, el único elemento que varía de un formulario a otro, son los campos asociados a la tabla a actualizar. El resto de componentes es exactamente igual, con las mismas funcionalidades.
Podemos entonces en pensar en un único formulario, cuyos campos sean dinámicos, dependiendo de la tabla que se quiera mantener. Estaremos aplicando el concepto de creación de aplicaciones conducidas por datos
Tablas de definición de Formularios
Se necesita básicamente de dos tablas dentro de la misma base de datos para lograr esta dinámica, una que guardará los datos de las tablas a mantener y otra que guardará la información de los campos correspondientes y sus características de formato.
Dependiendo del motor de Base de Datos con que se cuente, se puede incluso utilizar facilidades de lectura de los objetos de la base de datos y con ello evitar o reducir este par de tablas.
La tabla de formularios
La tabla de formularios contendrá como mínimo los siguientes datos:
- id: Es un campo entero, llave primaria, autogenerado. Con cada registro, se autoasigna su consecutivo.
- encabezado: Texto a colocar en el encabezado del formulario
- tabla: Nombre de la tabla a mantener en la Base de Datos
Ejemplo de la tabla ya con información:
La tabla de Campos
Los siguientes son los campos que darán forma al área de trabajo del formulario:
- id: Es un campo entero, llave primaria, autogenerado. Con cada registro, se autoasigna su consecutivo.
- formulario: es la identificacion (id) correpondiente al formulario al cual pertenece el campo.
- campo: Nombre de campo en la tabla de la base de datos.
- etiqueta: Texto a desplegar en el area de trabajo del formulario que identifica al campo respectivo.
- tamano: Tamaño del campo en caracteres.
- tipo: Tipo de Dato (texto, numero, fecha, etc.)
- secuencia: determina el orden del campo dentro del formulario
Ejemplo de los campos requeridos para los formularios registrados:
Vista para usar en tiempo de EJECUCIÓN
Por facilidad de uso, es conveniente tener en la base de datos, una vista que nos presente la informacion de encabezados y campos debidamente mezclada, a fin de tener todos los componentes necesarios a la hora de construir el formulario:
Formularios Dinámicos
Funcionamiento
El formulario que se desarrolle, debe en primera instancia, recibir dos parámetros:
- tabla: es el nombre de la tabla que se desea trabajar con el formulario.
- registro: es el numero de registro de la tabla especificada que se desea visualizar, modificar o eliminar
Por ejemplo, la instrucción siguiente llama al formulario dinámico, programado en PHP, le indica que utilize la tabla 1, y que muestre el registro 1
http://nombredeservidor/tstmaint.php?tabla=1®istro=ADD
en este caso, y utilizando las tablas de formularios y campos que definimos anteriormente, se estaría dando mantenimiento a la tabla “customers”, y se estaría llamando al formulario para que se active en modo de insercción de un nuevo dato:
Al ejecutarse el formulario debe realizar lo siguiente:
- Leer los parámetros tabla y registro suministrados en la URL
- Conectarse a la base de datos
- Leer la tabla que contiene la definición de formularios (xxFormularios en nuestro ejemplo) y extraer los datos “encabezado” y “tabla” correspondientes al id especificado en el parámetro “tabla” (1 en nuestro ejemplo).
- Leer la tabla de definición de campos (xxCampos) y extraer el set de registros pertenecientes a la tabla especificada en el parámetro “tabla”
- Leer la tabla especificada en el campo “tabla” de la consulta a “xxFormularios” y extraer el registro correspondiente al valor indicado en el parámetro “registro” de la URL utilizada. En caso de ser ADD, se interpreta como una insercción de datos, de lo contrario, recogerá el numero de registro indicado.
- “Dibujar” el formulario con los datos capturados:
- Encabezado
- El texto del encabezado proviene del campo “encabezado” de la lectura.
- El botón “Agregar” hace un simple llamado a, lo que permite “Agregar” un nuevo registro: http://nombredeservidor/tstmaint.php?tabla=1®istro=ADD
- Area de Trabajo
- Para cada uno de los campos identificados en la consulta a “xxCampos” y siguiendo la “secuencia” especificada, desplegar la “etiqueta” y la correspondiente captura del dato relacionado con el “campo”, respetando el formato que el “tipo” represente y el “tamaño” del mismo.
- Controles
- Agregar los botones para navegar al registro anterior o al registro siguiente
- Agregar los botones de “Grabar” y “Deshacer”
- Encabezado
Al llenar los datos y al utilizar la opción Grabar, el formulario deberá hacer lo necesario para enviar esa informacion a la base de datos y que la tabla correspondiente quede debidamente actualizada.
Control de calidad de datos
El aseguramiento de la calidad de datos, debe realizarse a nivel de la base de datos de manera que si una misma tabla es actualizada por varios sistemas, las revisiones sean siempre las mismas. Revisa el articulo descrito a continuación para mas detalles sobre como manejar las transacciones y calidad de datos
Con esta técnica, puedes simplificar la complejidad de tus aplicaciones y el correspondiente mantenimiento, tanto para introducir mejoras como para atender posibles errores de programación.
No olvides de compartir en tus redes sociales y de comentar!!!
Bendiciones!!!
La entrada Formularios Dinámicos se publicó primero en Gnomi Club.