Diferencia entre revisiones de «Tarea D: Validar la introducción de datos»

De Egeasy
Saltar a: navegación, buscar
(Véase también)
 
(No se muestran 19 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 +
[[Desarrollar_con_egeasy_paso_a_paso|Desarrollar con egeasy paso a paso]]
 +
 
Nuestro registro de entrada y salida está bastante completo: las entradas y salidas se autonumeran y esta numeración se reinicia todos los años; tenemos fichas para almacenar la información de todas las personas (físicas o jurídicas) que presenten documentación; además, podemos reflejar la documentación presentada y el departamento al que va dirigido. Pero, ¿y si al rellenar los datos no se especifica alguno de estos datos? ¿Y si al introducir una ficha de Tercero no se especifican el Nombre o el CIF? Necesitamos algún mecanismo para garantizar que determinados datos siempre se introduzcan.
 
Nuestro registro de entrada y salida está bastante completo: las entradas y salidas se autonumeran y esta numeración se reinicia todos los años; tenemos fichas para almacenar la información de todas las personas (físicas o jurídicas) que presenten documentación; además, podemos reflejar la documentación presentada y el departamento al que va dirigido. Pero, ¿y si al rellenar los datos no se especifica alguno de estos datos? ¿Y si al introducir una ficha de Tercero no se especifican el Nombre o el CIF? Necesitamos algún mecanismo para garantizar que determinados datos siempre se introduzcan.
  
Para alcanzar este objetivo, ODL proporciona una operación sobre los contenedores: las validaciones. Una validación es un conjunto de condiciones que se evalúan cuando el objeto va a almacenarse. En caso de que alguna de las condiciones se viole, la plataforma lanza un mensaje e impide que el objeto se almacene. Veamos un ejemplo:
+
__TOC__
 +
 
 +
==¿Qué es una validación? Insertar una condición en un formulario==
 +
Para alcanzar este objetivo, ODL proporciona una operación sobre los [[Contenedores|contenedores]]: las validaciones. Una validación es un conjunto de condiciones que se evalúan cuando el objeto va a almacenarse. En caso de que alguna de las condiciones se viole, la plataforma lanza un mensaje e impide que el objeto se almacene. Veamos un ejemplo:
  
 
  {{PR|tipo}} [Tercero] {{PR|es}} {{RE|contenedor}}
 
  {{PR|tipo}} [Tercero] {{PR|es}} {{RE|contenedor}}
Línea 25: Línea 30:
 
  {{PR|fin}}
 
  {{PR|fin}}
  
 +
===Atributos de una condición===
 
Para cada campo o valor que queramos comprobar deberemos añadir una declaración de {{PR|condicion}} como la del ejemplo anterior.
 
Para cada campo o valor que queramos comprobar deberemos añadir una declaración de {{PR|condicion}} como la del ejemplo anterior.
  
Línea 33: Línea 39:
 
En el atributo {{AT|localizacion.mensaje}} introducimos el mensaje que queremos que aparezca en el campo indicado por {{AT|localizacion.componente}} cuando el campo está vacío (incluso antes de se dispare la condición); en nuestro ejemplo, cuando creemos una nueva ficha de '''Tercero''' aparecerá el mensaje '''[OBLIGATORIO]''' en el campo '''Nombre/Razón social'''.
 
En el atributo {{AT|localizacion.mensaje}} introducimos el mensaje que queremos que aparezca en el campo indicado por {{AT|localizacion.componente}} cuando el campo está vacío (incluso antes de se dispare la condición); en nuestro ejemplo, cuando creemos una nueva ficha de '''Tercero''' aparecerá el mensaje '''[OBLIGATORIO]''' en el campo '''Nombre/Razón social'''.
  
En el atributo {{AT|tipo}} especificamos si la {{PR|condicion}} produce un error o una advertencia. Ambos lanzan un mensaje al usuario. La diferencia es que el error impide que el contenedor se guarde, mientras que la advertencia sólo avisa al usuario, dejando a su elección almacenar o no el objeto.
+
En el atributo {{AT|tipo}} especificamos si la {{PR|condicion}} produce un error o una advertencia. Ambos lanzan un mensaje al usuario. La diferencia es que el error impide que el [[Contenedores|contenedor]] se guarde, mientras que la advertencia sólo avisa al usuario, dejando a su elección almacenar o no el objeto.
  
 
Por último, el atributo {{AT|mensaje}} contiene el mensaje que se mostrará al usuario cuando se viole la {{PR|condicion}}. Este mensaje aparece a continuación del nombre de la {{PR|condicion}}. En nuestro ejemplo, el mensaje completo de error sería: '''“El campo Nombre/Razón social no puede estar vacío. Debe introducir un valor para este campo”'''.
 
Por último, el atributo {{AT|mensaje}} contiene el mensaje que se mostrará al usuario cuando se viole la {{PR|condicion}}. Este mensaje aparece a continuación del nombre de la {{PR|condicion}}. En nuestro ejemplo, el mensaje completo de error sería: '''“El campo Nombre/Razón social no puede estar vacío. Debe introducir un valor para este campo”'''.
Línea 41: Línea 47:
 
<center>
 
<center>
 
{|
 
{|
|align="center" |[[Imagen:Figura 14.jpg|thumb|250px|Figura 14 - Fichero de Tercero con campo obligatorio]]
+
|align="center" |[[Imagen:Figura 14.jpg|thumb|250px|Fichero de Tercero con campo obligatorio]]
 
|}
 
|}
 
</center>
 
</center>
Línea 49: Línea 55:
 
<center>
 
<center>
 
{|
 
{|
|align="center" |[[Imagen:Figura 15.jpg|thumb|250px|Figura 15 - Validación sobre la ficha de Tercero]]
+
|align="center" |[[Imagen:Figura 15.jpg|thumb|250px|Validación sobre la ficha de Tercero]]
 
|}
 
|}
 
</center>
 
</center>
Línea 55: Línea 61:
 
Si haces clic sobre el texto que aparece a continuación de error (El campos Nombre…), el cursor se posicionará automáticamente en el campo que produce el error.
 
Si haces clic sobre el texto que aparece a continuación de error (El campos Nombre…), el cursor se posicionará automáticamente en el campo que produce el error.
  
 +
==Añadiendo condiciones más complejas==
 
Las reglas de comprobación no tienen que ser tan simples como la que hemos puesto en el ejemplo anterior. Por ejemplo, supongamos que queremos validar que se introducen todos los datos de contacto del Tercero.
 
Las reglas de comprobación no tienen que ser tan simples como la que hemos puesto en el ejemplo anterior. Por ejemplo, supongamos que queremos validar que se introducen todos los datos de contacto del Tercero.
  
Línea 79: Línea 86:
 
     {{PR|condicion}} [Falta alguno de los datos de contacto]
 
     {{PR|condicion}} [Falta alguno de los datos de contacto]
 
         -{{AT|regla}} = ([Datos generales].[Dirección] = vacio)  
 
         -{{AT|regla}} = ([Datos generales].[Dirección] = vacio)  
                        {{OP|o}} (Datos generales].[Código Postal] = vacio)
+
                    {{OP|o}} ([Datos generales].[Código Postal] = vacio)
                        {{OP|o}} ([Datos generales].[Municipio] = vacio)
+
                    {{OP|o}} ([Datos generales].[Municipio] = vacio)
                        {{OP|o}} ([Datos generales].[Provincia] = vacio);
+
                    {{OP|o}} ([Datos generales].[Provincia] = vacio);
 
         -{{AT|localizacion}}.{{AT|componente}} = [Datos generales].[Dirección];
 
         -{{AT|localizacion}}.{{AT|componente}} = [Datos generales].[Dirección];
 
         -{{AT|tipo}} = error;
 
         -{{AT|tipo}} = error;
Línea 87: Línea 94:
 
  {{PR|fin}}
 
  {{PR|fin}}
  
Haciendo uso del '''operador lógico''' {{OP|o}}, evaluamos todos los campos que forman la dirección completa. Si alguno de esos campos está vacío, se violará la condición y no se podrá almacenar el contenedor.
+
Haciendo uso del '''operador lógico''' {{OP|o}}, evaluamos todos los campos que forman la dirección completa. Si alguno de esos campos está vacío, se violará la condición y no se podrá almacenar el [[Contenedores|contenedor]].
  
===¿Qué hemos aprendido?===
+
==¿Qué hemos aprendido?==
 
:*La validación es una '''operación''' que nos permite comprobar la validez de los datos introducidos en un formulario.
 
:*La validación es una '''operación''' que nos permite comprobar la validez de los datos introducidos en un formulario.
 
:*Una validación se compone de una o varias condiciones. Debemos declarar una {{PR|condicion}} por cada comprobación que queramos realizar.
 
:*Una validación se compone de una o varias condiciones. Debemos declarar una {{PR|condicion}} por cada comprobación que queramos realizar.
 
:*Las condiciones se disparan cuando el atributo {{AT|regla}} se evalúa a verdadero.
 
:*Las condiciones se disparan cuando el atributo {{AT|regla}} se evalúa a verdadero.
:*Una {{PR|condicion}} puede ser de '''error''' (impide almacenar el contenedor) o de '''advertencia''' (sólo informa al usuario).
+
:*Una {{PR|condicion}} puede ser de '''error''' (impide almacenar el [[Contenedores|contenedor]]) o de '''advertencia''' (sólo informa al usuario).
  
===Ejercicios===
+
==Ejercicios==
 
:*Comprueba qué ocurre cuando ponemos advertencia en vez de error en el atributo {{AT|tipo}}.
 
:*Comprueba qué ocurre cuando ponemos advertencia en vez de error en el atributo {{AT|tipo}}.
:*La función '''$longitudTexto''' recibe como parámetro de entrada un campo de tipo {{T|texto}} y devuelve un {{T|entero}} con el número de caracteres del campo. Añade una condición a la ficha de Tercero para que compruebe que la longitud del campo '''Código postal''' es exactamente 5.
+
:*La función '''$longitudTexto''' recibe como parámetro de entrada un campo de tipo {{T|texto}} y devuelve un {{T|entero}} con el número de caracteres del campo. Añade una condición a la ficha de '''Tercero''' para que compruebe que la longitud del campo '''Código postal''' es exactamente 5.
:*La función '''$numeroFilas''' recibe como parámetro de entrada una {{T|tabla}} y devuelve un entero con el número de filas de la {{T|tabla}}. Añade una condición a la definición de '''Entrada''' para que compruebe que la {{T|tabla}} de '''Documentación presentada''' tiene al menos una fila.
+
:*La función '''$numeroFilas''' recibe como parámetro de entrada una matriz y devuelve un entero con el número de filas de la {{T|tabla}}. Añade una condición a la definición de '''Entrada''' para que compruebe que la {{T|tabla}} de '''Documentación presentada''' tiene al menos una fila. Ten en cuenta que debemos convertir la tabla a matriz con la funcion '''$matriz''' cuyo resultado nos servirá como parámetro en '''$numeroFilas'''.
 +
 
 +
==Siguiente tarea==
 +
 
 +
:*[[Tarea_E:_Utilizar_el_registro_como_un_almacén_de_documentación|Tarea E: Utilizar el registro como un almacén de documentación]]
 +
 
 +
==Véase también==
 +
 
 +
:*[[Tarea_A:_Libros_y_registro_de_entrada_y_salida|Tarea A: Libros y registro de entrada y salida]]
 +
:*[[Tarea_B:_Mejorando_la_numeración_del_registro|Tarea B: Mejorando la numeración del registro]]
 +
:*[[Tarea_C:_Evolucionando_la_arquitectura_del_registro|Tarea C: Evolucionando la introducción de datos]]
 +
:*[[Tarea_F:_Abriendo_el_registro_al_resto_de_las_oficinas|Tarea F: Abriendo el registro al resto de las oficinas]]
 +
:*[[Tarea_G:_Evitando_la_replicación_de_código|Tarea G: Evitando la replicación de código]]
 +
:*[[Tarea_H:_Emitir_certificados_de_documentación|Tarea H: Emitir certificados de documentación]]
 +
:*[[Tarea_I:_Creando_una_oficina_sin_papeles|Tarea I: Creando una oficina sin papeles]]
 +
:*[[Tarea_J:_Importar_la_base_de_datos_de_terceros_de_otra_aplicación|Tarea J: Importar la base de datos de terceros de otra aplicación]]

Revisión actual del 11:23 4 ago 2009

Desarrollar con egeasy paso a paso

Nuestro registro de entrada y salida está bastante completo: las entradas y salidas se autonumeran y esta numeración se reinicia todos los años; tenemos fichas para almacenar la información de todas las personas (físicas o jurídicas) que presenten documentación; además, podemos reflejar la documentación presentada y el departamento al que va dirigido. Pero, ¿y si al rellenar los datos no se especifica alguno de estos datos? ¿Y si al introducir una ficha de Tercero no se especifican el Nombre o el CIF? Necesitamos algún mecanismo para garantizar que determinados datos siempre se introduzcan.

¿Qué es una validación? Insertar una condición en un formulario

Para alcanzar este objetivo, ODL proporciona una operación sobre los contenedores: las validaciones. Una validación es un conjunto de condiciones que se evalúan cuando el objeto va a almacenarse. En caso de que alguna de las condiciones se viole, la plataforma lanza un mensaje e impide que el objeto se almacene. Veamos un ejemplo:

tipo [Tercero] es contenedor
   [Datos generales] es formulario
       [Nombre/Razón social] es texto
       [Apellidos] es texto
       [CIF/NIF] es texto
       [Dirección] es texto
       [Código postal] es texto
       [Municipio] es texto
       [Provincia] es texto
       [Teléfono 1] es texto
       [Teléfono 2] es texto
       [Fax] es texto
       [Email] es texto
   fin
   condicion [El campo Nombre/Razón social no puede estar vacío]
       -regla = [Datos generales].[Nombre/Razón social] = vacio;
       -localizacion.componente = [Datos generales].[Nombre/Razón social];
       -localizacion.mensaje = "[OBLIGATORIO]";
       -tipo = error;
       -mensaje = "Debe introducir un valor para este campo.";
fin

Atributos de una condición

Para cada campo o valor que queramos comprobar deberemos añadir una declaración de condicion como la del ejemplo anterior.

En el atributo regla se especifica la condición lógica que se evalúa para comprobar si la condición es o no violada; en nuestro ejemplo, la condición se viola si el campo Nombre/Razón social está vacío.

En el atributo localizacion.componente indicamos el campo en el que debe posicionarse el cursor cuando se dispare la condición; en el ejemplo, cuando esta condición se viole el cursor se posicionará en el campo Nombre/Razón social.

En el atributo localizacion.mensaje introducimos el mensaje que queremos que aparezca en el campo indicado por localizacion.componente cuando el campo está vacío (incluso antes de se dispare la condición); en nuestro ejemplo, cuando creemos una nueva ficha de Tercero aparecerá el mensaje [OBLIGATORIO] en el campo Nombre/Razón social.

En el atributo tipo especificamos si la condicion produce un error o una advertencia. Ambos lanzan un mensaje al usuario. La diferencia es que el error impide que el contenedor se guarde, mientras que la advertencia sólo avisa al usuario, dejando a su elección almacenar o no el objeto.

Por último, el atributo mensaje contiene el mensaje que se mostrará al usuario cuando se viole la condicion. Este mensaje aparece a continuación del nombre de la condicion. En nuestro ejemplo, el mensaje completo de error sería: “El campo Nombre/Razón social no puede estar vacío. Debe introducir un valor para este campo”.

Compila y actualiza. Veamos cómo funciona.

Fichero de Tercero con campo obligatorio

Como podrás observar, cuando creas una nueva ficha de Tercero te aparece automáticamente [OBLIGATORIO] en el campo Nombre/Razón social. Si intentas almacenar la ficha sin introducir ningún dato, se violará la condición y te aparecerá una ventana similar a la siguiente:

Validación sobre la ficha de Tercero

Si haces clic sobre el texto que aparece a continuación de error (El campos Nombre…), el cursor se posicionará automáticamente en el campo que produce el error.

Añadiendo condiciones más complejas

Las reglas de comprobación no tienen que ser tan simples como la que hemos puesto en el ejemplo anterior. Por ejemplo, supongamos que queremos validar que se introducen todos los datos de contacto del Tercero.

tipo [Tercero] es contenedor
   [Datos generales] es formulario
       [Nombre/Razón social] es texto
       [Apellidos] es texto
       [CIF/NIF] es texto
       [Dirección] es texto
       [Código postal] es texto
       [Municipio] es texto
       [Provincia] es texto
       [Teléfono 1] es texto
       [Teléfono 2] es texto
       [Fax] es texto
       [Email] es texto
   fin
   condicion [El campo Nombre/Razón social no puede estar vacío]
       -regla = [Datos generales].[Nombre/Razón social] = vacio;
       -localizacion.componente = [Datos generales].[Nombre/Razón social];
       -localizacion.mensaje = "[OBLIGATORIO]";
       -tipo = error;
       -mensaje = "Debe introducir un valor para este campo.";
   condicion [Falta alguno de los datos de contacto]
       -regla = ([Datos generales].[Dirección] = vacio) 
                    o ([Datos generales].[Código Postal] = vacio)
                    o ([Datos generales].[Municipio] = vacio)
                    o ([Datos generales].[Provincia] = vacio);
       -localizacion.componente = [Datos generales].[Dirección];
       -tipo = error;
       -mensaje = "Debe introducir la dirección completa.";
fin

Haciendo uso del operador lógico o, evaluamos todos los campos que forman la dirección completa. Si alguno de esos campos está vacío, se violará la condición y no se podrá almacenar el contenedor.

¿Qué hemos aprendido?

  • La validación es una operación que nos permite comprobar la validez de los datos introducidos en un formulario.
  • Una validación se compone de una o varias condiciones. Debemos declarar una condicion por cada comprobación que queramos realizar.
  • Las condiciones se disparan cuando el atributo regla se evalúa a verdadero.
  • Una condicion puede ser de error (impide almacenar el contenedor) o de advertencia (sólo informa al usuario).

Ejercicios

  • Comprueba qué ocurre cuando ponemos advertencia en vez de error en el atributo tipo.
  • La función $longitudTexto recibe como parámetro de entrada un campo de tipo texto y devuelve un entero con el número de caracteres del campo. Añade una condición a la ficha de Tercero para que compruebe que la longitud del campo Código postal es exactamente 5.
  • La función $numeroFilas recibe como parámetro de entrada una matriz y devuelve un entero con el número de filas de la tabla. Añade una condición a la definición de Entrada para que compruebe que la tabla de Documentación presentada tiene al menos una fila. Ten en cuenta que debemos convertir la tabla a matriz con la funcion $matriz cuyo resultado nos servirá como parámetro en $numeroFilas.

Siguiente tarea

Véase también