Formulario de base de datos
<< Click to Display Table of Contents >> Navigation: Capas > Formularios > Formulario de base de datos |
Los formularios de base de datos son utilizados para administrar datos almacenados en bases de datos externas a JMap. Permiten añadir nuevos datos así como modificar y suprimir los datos existentes. Se pueden crear varios formularios de este tipo para una misma capa. Cada formulario de base de datos incluye sus propios permisos para determinar los usuarios que pueden manipular los datos.
Estos formularios pueden ser utilizados para manejar datos que guardan una relación 1 a 1 con los datos de la capa. En ese caso, cuando un elemento es creado se añade un registro en la base de datos y al contrario, se elimina el registro cuando un elemento es suprimido.
Los formularios pueden también usarse para manejar datos que guardan una relación 1 a N con los datos de la capa. En ese caso, se trata de un tipo especial de formulario denominado subformulario, que está siempre asociado con un componente tabla de un formulario. La sección Subformularios presenta más detalles sobre el tema.
La configuración de este tipo de formularios es una función avanzada de JMap que requiere la elaboración de expresiones SQL para la extracción, inserción, modificación y supresión de datos.
Los formularios de base de datos se utilizan para manejar datos externos a JMap que se relacionan con los elementos de una capa mediante un campo en común.
Creación de un formulario de base de datos
Para crear un formulario de base de datos, seleccione Formularios en el menú de parámetros de la capa. En la pestaña Formulario presione Crear.
Debe ingresar un nombre para el nuevo formulario. Seleccione el tipo Base de datos y seleccione la base de datos que contiene los datos que se usarán en el formulario.
En la etapa siguiente, una ventana le permite escribir las expresiones SQL del formulario. Estas expresiones sirven para extraer, añadir, modificar y suprimir los datos. La sentencia SELECT es obligatoria mientras que las otras son opcionales. Sólo podrán efectuarse las operaciones para las cuales se suministra una sentencia SQL.
La configuración de las expresiones SQL utiliza una sintaxis especial. En regla general, cada línea de la sintaxis debe terminar con un punto y coma (;). La sintaxis no es sensible a mayúsculas y minúsculas.
El cuadro siguiente explica en detalle el funcionamiento de esta sintaxis.
Sintaxis de los formularios de base de datos |
|
ev(attrib) o elementValue(attrib) |
Función que devuelve, para un elemento, el valor del atributo especificado en parámetro. Ejemplo: ev(city); (retorna el valor del atributo city del elemento). |
fv(field) o formValue(field) |
Función que devuelve el valor ingresado en el formulario, para el campo especificado en parámetro. El nombre del campo debe obligatoriamente incluir el nombre de la tabla como prefijo. Ejemplo: fv(table.name); (devuelve el valor ingresado en el componente del formulario asociado al campo table.name la base de datos.) |
ei() o elementId() |
Función que devuelve el identificador del elemento. Puede tratarse de un campo jmap_id o de otro campo, tal como se ha configurado en la fuente de datos espaciales. |
$variable |
Permite crear e inicializar variables que pueden luego ser utilizadas en las distintas expresiones. En el caso de la sentencia INSERT, por ejemplo, resulta obligatorio crear una variable que contiene el identificador único del elemento añadido. Ejemplo: $city = EV(city); (Crea una variable $city inicial izada con el valor del atributo city del elemento.) |
nti(table, field) o nextTableId(table, field) |
Función que devuelve el próximo valor que se utilizará como identificador numérico para la tabla y el campo especificados en parámetro. El campo debe existir en la tabla especificada y debe ser de tipo numérico entero. La función determina cual es el valor máximo presente en la tabla y devuelve ese valor incrementado en 1 (max + 1). Esta función resulta útil cuando se añade un nuevo registro en la base de datos en una tabla que contiene un identificador numérico único. Ejemplo: $id = nextTableId(inspections, inspection_id) (Crea e inicializa una variable $id con el valor del próximo identificador inspection_id de la tabla inspections. Si el valor máximo presente es 100, el valor devuelto es 101.) |
El cuadro siguiente explica en detalle cada uno de los parámetros de la ventana de creación de un formulario para base de datos.
Propiedades del formulario |
|
Base de datos |
Seleccione la base de datos que contiene los datos que serán manipulados con el formulario. |
Sentencia SELECT |
Expresión SQL que obtiene los datos para poblar los campos del formulario. Todos los campos devueltos por esta expresión pueden ser utilizados para configurar los componentes del formulario así como intervenir en otras expresiones definidas en el formulario mediante la función fv(). Las sentencias deben contener una condición que permita establecer el enlace entre un atributo de la capa y un campo de la base de datos. Ejemplo: select * from assets where asset_id = ev(asset_id); En este ejemplo se obtienen todos los campos de la tabla assets. Los campos obtenidos están disponibles para la configuración de los componentes del formulario. El campo asset_id es utilizado para establecer el enlace con el elemento de la capa, mediante la función ev(attrib). |
Identificador único |
La sentencia SELECT debe obligatoriamente incluir un campo de identificación único (numérico o alfanumérico). Seleccionar el campo que funcionará como identificador único. |
Sentencia INSERT |
Expresión SQL que inserta nuevos datos en la base de datos. Configure esta sentencia sólo si el formulario permitirá la inserción de registros en la base de datos. Se debe definir obligatoriamente una variable que contiene el valor del identificador único para el nuevo registro. Ejemplo: $id = ev(asset_id); insert into assets (asset_id, date_inst, asset_type) values ($id, fv(assets.date_inst), fv(assets.asset_type)); En este ejemplo, una variable $id es creada e inicial izada con el valor del atributo asset_id del elemento cartográfico, utilizando la función ev(attrib). Los datos del formulario son insertados en la tabla assets cuando se ejecuta la sentencia SQL de tipo insert. Los valores de los campos assets.date_inst y assets.asset_type provienen de los valores ingresados en el formulario por el usuario utilizando la función fv(field). El valor del campo asset_id proviene de la variable $id. Ejemplo: $id = nti(inspections, id); insert into inspections (id, date_insp, insp_by, notes) values ($id, fv(inspections.date_insp), fv(inspections.insp_by), fv(inspections.notes)); En este ejemplo, una variable $id es creada e inicial izada con el próximo valor (max + 1) del campo id de la tabla inspections. Los datos del formulario son insertados en la tabla inspections cuando se ejecuta la sentencia SQL de tipo insert. Los valores de los campos date_insp, insp_by y notes provienen de los valores ingresados en el formulario por el usuario utilizando la función fv(field). El valor del campo id proviene de la variable $id. |
Variable del identificador único (ID) del nuevo elemento |
Seleccione la variable que contiene el valor del identificador único del nuevo registro insertado en la tabla. Ésta debe ser definida con la sentencia INSERT. |
Sentencia UPDATE |
Expresión SQL que actualiza los datos en la base de datos. Configure esta sentencia sólo si el formulario permitirá la actualización de los datos. Ejemplo: update assets set date_inst = fv(assets.date_inst), asset_type = fv(assets.asset_type) where asset_id = ei(); En este ejemplo los datos del formulario son utilizados para actualizar la tabla assets cuando se ejecuta la sentencia SQL de tipo update. Los valores de los campos assets.date_inst y assets.asset_type provienen de los valores ingresados en el formulario por el usuario utilizando la función fv(field). La cláusula where permite actualizar el registro que contiene el identificador único del elemento utilizando la función ei(). Ejemplo: update inspections set notes = fv(inspections.notes) where inspection_id = fv(inspections.inspection_id); En este ejemplo los datos del formulario son utilizados para actualizar la tabla inspections cuando se ejecuta la sentencia SQL de tipo update. Sólo el valor del campo notes es actualizado y proviene del valor ingresado en el formulario por el usuario mediante la función fv(field). La cláusula where utiliza la función fv(field) para obtener el valor del identificador único del registro. En ese caso, el campo inspection_id no está asociado a un componente del formulario, pero se puede acceder a su valor utilizando la función fv(field). |
Sentencia DELETE |
Expresión SQL que suprime los datos en la base de datos. Configure esta sentencia sólo si el formulario debe permitir la supresión de los datos. Ejemplo: delete from assets where asset_id = ev(asset_id); En este ejemplo se elimina de la tabla el registro correspondiente al valor del atributo asset_id del elemento, usando la función ev(attrib) para obtener el valor del identificador del elemento. Ejemplo: delete from inspections where inspection_id = fv(inspections.inspection_id); En este ejemplo el registro correspondiente al identificador único de la inspección es eliminado de la tabla, utilizando la función fv(field) para obtener el valor del identificador. |
Los subformularios son formularios de base de datos que se abren a partir de un componente Tabla presente en otro formulario. Usualmente se utilizan para manejar datos que tienen una relación 1 a N con los elementos de la capa. Pueden servir, por ejemplo, para el manejo de datos de inspecciones de activos (N inspecciones pueden ser asociadas a un mismo objeto). Se configuran de manera similar a los otros formularios de base de datos.
Para crear un subformulario, seleccione Formularios en el menú de parámetros de la capa. En la pestaña Subformulario presione Crear. Debe ingresar un nombre para el nuevo formulario y seleccionar la base de datos que contiene los datos que se utilizarán en el subformulario.
En la etapa siguiente debe configurar la expresión SQL del subformulario, como se detalla en la sección precedente.
Los subformularios son formularios de base de datos que permiten manejar los datos que guardan una relación 1 a N con los datos de la capa, utilizando un campo en común.
Permisos de los formularios de base de datos
Los formularios para base de datos tienen sus propios permisos, que se describen en este cuadro.
Permisos de los formularios |
|
Agregar datos |
Permite que un usuario o grupo de usuarios utilicen el formulario para añadir nuevos datos en la base de datos. |
Editar datos |
Permite que un usuario o grupo de usuarios utilicen el formulario para modificar datos existentes en la base de datos. |
Eliminar datos |
Permite que un usuario o grupo de usuarios utilicen el formulario para suprimir datos existentes en la base de datos. |