Los formularios de base de datos son utilizados para administrar datos almacenados en bases de datos externas a JMap Server. 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 Server que requiere la elaboración de expresiones SQL para la extracción, inserción, modificación y supresión de datos.
Para crear un formulario de base de datos, presione Crear en la pestaña Formularios de la interfaz de configuración de la capa.
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 sentencias son opcionales.
Los usuarios de las aplicaciones JMap podrán efectuar solo las operaciones para las cuales usted 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.
La tabla siguiente explica en detalle cada uno de los parámetros de la ventana de creación de un formulario para base de datos.
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, presione Crear en la sección Subformulario de la pestaña Formularios en la interfaz de configuración de la capa. 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.
Varios niveles de subformularios pueden estar imbricados en un subformulario. Se utilizan para manejar datos que tienen una relación 1 a N con los registros del subformulario. Pueden servir, por ejemplo, para la gestión de los datos de intervenciones que tienen lugar como consecuencia de la inspección de un activo (N intervenciones pueden estar asociadas a una inspección).
Un subformulario imbricado se abre a partir de un componente Tabla presente en el subformulario con el que se vincula.
La creación de un subformulario imbricado sigue las mismas etapas que la creación de subformularios. La sección Creación de formularios de bases de datos presenta ejemplos de expresiones SQL.
La figura presenta un ejemplo de subformularios imbricados en una aplicación JMap Pro.
El botón Permisos se localiza en la interfaz de configuración del formulario.
La sección Permisos contiene dos pestañas: Permisos y Propietarios. Los propietarios son los únicos que pueden administrar la lista de propietarios, incluyendo la supresión de la misma.
Los usuarios y grupos disponibles se configuran en la sección JMap Server de JMap Admin. La sección Usuarios y grupos ofrece más información sobre la gestión de usuarios en JMap Server.
Los formularios para base de datos tienen los permisos que se describen en la tabla:
La pestaña Permisos muestra una tabla de los usuarios y grupos que tienen permisos. Presione para añadir nuevos usuarios o grupos.
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 de 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
inicializada 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.
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 de sentencia para un formulario de base de datos (1 a 1)
SELECT * FROM ASSET_INFO WHERE ASSET_ID = EI()
;
En este ejemplo se obtienen todos los campos de la tabla ASSET_INFO.
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 ei()
.
Si la funciónei()
retorna un valor en formato texto, para visualizarlo usted debe rodear la función con apóstrofes:
SELECT * FROM ASSET_INFO WHERE ASSET_ID = 'EI()';
Ejemplos de sentencia para un formulario de base de datos (1 a N)
Ejemplo del subformulario Inspections
SELECT * FROM INSPECTION WHERE ASSET_ID = EI();
En este ejemplo se obtienen todos los campos de la tabla INSPECTION, que quedan disponibles para la configuración de los componentes del subformulario.
El campo ASSET_ID se utiliza para establecer la relación con el elemento de la capa ASSETS mediante la función ei()
.
Si la funciónei()
retorna un valor en formato texto, para visualizarlo usted debe rodear la función con apóstrofes:
SELECT * FROM INSPECTION WHERE ASSET_ID = 'EI()';
Ejemplo del subformulario imbricado Inspectors
SELECT * FROM INSPECTOR WHERE INSPECTION_ID = FV(INSPECTION_ID);
En este ejemplo se obtienen todos los campos de la tabla INSPECTOR que quedan disponibles para la configuración de los componentes del subformulario.
El campo INSPECTION_ID se utiliza para establecer la relación con el elemento de la tabla INSPECTION utilizando la función fv(field)
.
Ejemplo del subformulario imbricado Interventions
SELECT * FROM INTERVENTION WHERE INSPECTION_ID = FV(INSPECTION_ID);
En este ejemplo se obtienen todos los campos de la tabla INTERVENTION que quedan disponibles para la configuración de los componentes del subformulario.
El campo INSPECTION_ID se utiliza para establecer la relación con el elemento de la tabla INSPECTION utilizando la función fv(field)
.
Identificador único
La sentencia SELECT debe incluir obligatoriamente un campo de identificación único (numérico o alfanumérico). Seleccionar el campo que funcionará como identificador único.
Ejemplo de sentencia formulario de base de datos (1 a 1) ASSET_INFO.ASSET_ID
Ejemplo de sentencia formulario de base de datos (1 a N) subformulario Inspections INSPECTION.INSPECTION_ID
Ejemplo de sentencia formulario de base de datos (1 a N) subformulario imbricado Inspectors INSPECTOR.INSPECTOR_ID
Ejemplo de sentencia formulario de base de datos (1 a N) subformulario imbricado Interventions INTERVENTION.INTERVENTION_ID
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 de sentencia para un formulario de base de datos (1 a 1)
$id = ei()
;
INSERT INTO ASSET_INFO (ASSET_ID, ASSET_YEAR, BRAND, ASSET_HEIGHT) VALUES (EI(), FV(ASSET_INFO.ASSET_YEAR), FV(ASSET_INFO.BRAND), FV(ASSET_INFO.ASSET_HEIGHT))
;
En este ejemplo, cuando se ejecuta la sentencia SQL de tipo INSERT los datos del formulario se insertan en la tabla ASSET_INFO.
Los valores de los campos ASSET_INFO.ASSET_YEAR, ASSET_INFO.BRAND y ASSET_INFO.ASSET_HEIGHT provienen de los valores ingresados en el formulario por el usuario, utilizando la función fv(field)
.
El valor de la variable ASSET_INFO.ASSET_ID proviene de la función ei()
.
Ejemplos de sentencia para un formulario de base de datos (1 a N)
Ejemplo del subformulario Inspections
$id = nti(INSPECTION, INSPECTION_ID)
;
INSERT INTO INSPECTION (INSPECTION_ID, ASSET_ID, INSP_DATE, INSP_COMMENT) VALUES ($id, EI(), FV(INSPECTION.INSP_DATE), FV(INSPECTION.INSP_COMMENT))
;
En este ejemplo se crea una variable $id
que se inicializa con el próximo valor (max + 1) del campo ID de la tabla INSPECTION.
Cuando se ejecuta la sentencia SQL de tipo INSERT los datos del subformulario se insertan en la tabla INSPECTION.
Los valores de los campos INSP_DATE e INSP_COMMENT provienen de los valores ingresados por el usuario en el subformulario utilizando la función fv(field)
.
El valor del campo INSPECTION_ID proviene de la variable $id
.
El valor del campo ASSET_ID proviene de la funciónei()
.
Ejemplo del subformulario imbricado Inspectors
$id = nti(INSPECTOR, INSPECTOR_ID)
;
INSERT INTO INSPECTOR (INSPECTOR_ID, INSPECTION_ID, CONTACT_INFO, TEAM) VALUES ($id, FV(INSPECTOR.INSPECTION_ID), FV(INSPECTOR.CONTACT_INFO), FV(INSPECTOR.TEAM))
;
En este ejemplo se crea una variable $id
que se inicializa con el próximo valor (max + 1) del campo ID de la tabla INSPECTOR.
Cuando se ejecuta la sentencia SQL de tipo INSERT los datos del formulario se insertan en la tabla INSPECTOR.
Los valores de los campos INSPECTION_ID, CONTACT_INFO y TEAM provienen de los valores ingresados por el usuario en el subformulario utilizando la función fv(field)
.
El valor del campo INSPECTION_ID proviene de la variable $id
.
El valor del campo INSPECTOR_ID proviene de la variable$id
.
Ejemplo del subformulario imbricado Interventions
$id = nti(INTERVENTION, INTERVENTION_ID)
;
INSERT INTO INTERVENTION (INTERVENTION_ID, INSPECTION_ID, WORK_ORDER, FOLLOW_UP) VALUES ($id, FV(INSPECTION_ID), FV(INTERVENTION.WORK_ORDER), FV(INTERVENTION.FOLLOW_UP))
;
En este ejemplo se crea una variable $id
que se inicializa con el próximo valor (max + 1) del campo ID de la tabla INTERVENTION.
Cuando se ejecuta la sentencia SQL de tipo INSERT los datos del formulario se insertan en la tabla INTERVENTION.
Los valores de los campos INSPECTION_ID, WORK_ORDER y FOLLOW_UP provienen de los valores ingresados por el usuario en el subformulario utilizando la función fv(field)
.
El valor del campo INTERVENTION_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. Para que sus datos se guarden en la base de datos (las fotos, por ejemplo), usted debe definir y seleccionar esta variable.
Ejemplo de sentencia formulario de base de datos (1 a 1)
$id
Ejemplo de sentencia formulario de base de datos (1 a N) subformulario Inspections
$id
Ejemplo de sentencia formulario de base de datos (1 a N) subformulario imbricado Inspectors
$id
Ejemplo de sentencia formulario de base de datos (1 a N) subformulario imbricado Interventions
$id
Sentencia UPDATE
Expresión SQL que actualiza los datos en la base de datos. Configure esta sentencia solo si el formulario permite la actualización de los datos.
Ejemplo de sentencia para un formulario de base de datos (1 a 1)
UPDATE ASSET_INFO SET ASSET_YEAR = FV(ASSET_INFO.ASSET_YEAR), BRAND = FV(ASSET_INFO.BRAND), ASSET_HEIGHT = FV(ASSET_INFO.ASSET_HEIGHT) WHERE ASSET_ID = FV(ASSET_INFO.ASSET_ID)
;
En este ejemplo, cuando se ejecuta la sentencia SQL de tipo UPDATE los datos del formulario se utilizan para actualizar la tabla ASSET_INFO.
Los valores de los campos ASSET_YEAR, BRAND y ASSET_HEIGHT provienen de los valores ingresados por el usuario en el formulario utilizando la función fv(field)
.
La cláusula WHERE permite actualizar el registro que contiene el identificador único del elemento, ASSET_ID, utilizando también la función fv(field)
.
Ejemplos de sentencia para un formulario de base de datos (1 a N)
Ejemplo del subformulario Inspections
UPDATE INSPECTION SET INSP_DATE = FV(INSPECTION.INSP_DATE), INSP_COMMENT = FV(INSPECTION.INSP_COMMENT) WHERE INSPECTION_ID = FV(INSPECTION.INSPECTION_ID)
;
En este ejemplo, cuando se ejecuta la sentencia SQL de tipo UPDATE los datos del subformulario se utilizan para actualizar la tabla INSPECTION.
Los valores de los campos INSP_DATE e INSP_COMMENT se actualizan a partir de los valores ingresados por el usuario en el subformulario, utilizando la función fv(field)
.
La cláusula WHERE utiliza la función fv(field)
para obtener el valor del identificador único del registro.
Ejemplo del subformulario imbricado Inspectors
UPDATE INSPECTOR SET CONTACT_INFO = FV(INSPECTOR.CONTACT_INFO), TEAM = FV(INSPECTOR.TEAM) WHERE INSPECTOR_ID = FV(INSPECTOR.INSPECTOR_ID)
;
En este ejemplo, cuando se ejecuta la sentencia SQL de tipo UPDATE los datos del subformulario se utilizan para actualizar la tabla INSPECTOR.
Los valores del campo CONTACT_INFO se actualizan a partir de los de los valores ingresados por el usuario en el subformulario, utilizando la función fv(field)
.
La cláusula WHERE utiliza la función fv(field)
para obtener el valor del identificador único del registro.
Ejemplo del subformulario imbricado Interventions
UPDATE INTERVENTION SET WORK_ORDER = FV(INTERVENTION.WORK_ORDER), FOLLOW_UP = FV(INTERVENTION.FOLLOW_UP) WHERE INTERVENTION_ID = FV(INTERVENTION.INTERVENTION_ID)
;
En este ejemplo, cuando se ejecuta la sentencia SQL de tipo UPDATE los datos del subformulario se utilizan para actualizar la tabla INTERVENTION.
Los valores de los campos WORK_ORDER y FOLLOW_UP se actualizan a partir de los de los valores ingresados por el usuario en el subformulario, utilizando la función fv(field)
.
La cláusula WHERE utiliza la función fv(field)
para obtener el valor del identificador único del registro.
Sentencia DELETE
Expresión SQL que suprime los datos en la base de datos. Configure esta sentencia solo si el formulario permite la supresión de los datos. Ejemplo de sentencia para un formulario de base de datos (1 a 1)
DELETE FROM ASSET_INFO WHERE ASSET_ID = FV(ASSET_INFO.ASSET_ID)
;
En este ejemplo el registro correspondiente al valor del atributo ASSET_ID del elemento es eliminado de la tabla ASSET_INFO, utilizando la función fv(field)
para obtener el valor del identificador del elemento.
Ejemplos de sentencia para un formulario de base de datos (1 a N)
Ejemplo del subformulario Inspections
DELETE FROM INSPECTION WHERE INSPECTION_ID = FV(INSPECTION.INSPECTION_ID)
;
DELETE FROM INTERVENTION WHERE INSPECTION_ID = FV(INSPECTION.INSPECTION_ID)
;
DELETE FROM INSPECTOR WHERE INSPECTION_ID = FV(INSPECTION.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.
Al eliminarse la inspección, los registros de los subformularios imbricados INTERVENTION e INSPECTOR correspondientes al identificador único de la inspección son eliminados también de la tabla.
Ejemplo del subformulario imbricado Inspectors
DELETE FROM INSPECTOR WHERE INSPECTOR_ID = FV(INSPECTOR.INSPECTOR_ID)
;
En este ejemplo, el registro correspondiente al identificador único del inspector es eliminado de la tabla utilizando la función fv(field)
para obtener el valor del identificador.
Ejemplo del subformulario imbricado Interventions
DELETE FROM INTERVENTION WHERE INTERVENTION_ID = FV(INTERVENTION.INTERVENTION_ID)
;
En este ejemplo, el registro correspondiente al identificador único de la intervención es eliminado de la tabla utilizando la función fv(field)
para obtener el valor del identificador.
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.