< Anterior | Siguiente >

Lección 3: Utilización de la condición de búsqueda OR

En esta lección, añadirá a la página un grupo de botones de selección que permitirán al usuario elegir entre una condición de búsqueda AND y OR.

Cuando ejecute esta página improvisada, tendrá este aspecto:

Página de búsqueda finalizada al final de esta lección

Añadir el código de búsqueda OR a la biblioteca

En la lección anterior, ha añadido una función que busca con la condición AND. En los pasos siguientes, añadirá una función que buscará con la condición OR. En ese modo, el usuario podrá buscar los registros que coincidan con un apellido o con un estado.
  1. Abra el archivo de biblioteca SearchLibrary.egl.
  2. Añada el código siguiente al archivo, justo antes de la sentencia final end:
    	function NameAndStateSearch_Or(lname STRING in, 
    			state CHAR(2) in, customer Customer[])
    get customer with
    			#sql{
    				select
    					CUSTOMERID, FIRSTNAME, LASTNAME, PASSWORD, PHONE, 
    					EMAILADDRESS, STREET, APARTMENT, CITY, "STATE", 
    					POSTALCODE, DIRECTIONS
    				from EGL.CUSTOMER
    				where LASTNAME like :lname 
    					or "STATE" = :state
    			order by
    				CUSTOMERID asc
    			};
    	end

    Esta función es idéntica a la función NameAndStateSearch_And que ha añadido en la lección anterior, excepto que utiliza OR en lugar de AND en la sentencia where.

  3. Guarde el archivo. EGL genera la biblioteca de forma automática.
  4. Cierre el archivo.

Este es el código completo del archivo SearchLibrary.egl. Si ve errores marcados por símbolos X rojos en el archivo, asegúrese de que el código coincida con el código de este archivo:Archivo SearchLibrary.egl completado después de la lección 3.

Añadir un grupo de botones de selección a la página

Ahora que dispone de dos funciones de búsqueda diferentes, debe añadir un botón de selección a la página para que el usuario pueda elegir el tipo de búsqueda que desea utilizar.
  1. Vuelva al archivo customersearch.jsp.
  2. Añada una línea nueva encima del botón Someter situando el cursor a la izquierda del botón Someter y pulsando Intro.
  3. Desde la Paleta, abra el cajón Componentes Faces mejorados.
  4. Arrastre un Grupo de botones de selección a la línea nueva.
  5. Pulse el grupo de botones de selección para seleccionarlo.
  6. Si no tiene abierta la vista Propiedades, ábrala pulsando Ventana > Mostrar vista > Propiedades.
  7. En la vista Propiedades, pulse el botón Añadir opción. El botón Añadir opción se encuentra en el extremo derecho de la vista Propiedades. Una opción nueva para el grupo de botones de selección se listará en la tabla a la izquierda de los botones.
  8. En el campo Etiqueta de la opción nueva, escriba este texto:

    AND

  9. En el campo Valor de esta opción, escriba este texto:

    AND

  10. Pulse de nuevo Añadir opción.
  11. Escriba este texto para los campos Etiqueta y Valor de la segunda opción:

    OR

    Cuando haya terminado, la vista de propiedades tendrá este aspecto:
    Vista Propiedades que muestra las opciones del grupo de botones de selección
  12. Guarde la página.
Cuando haya terminado de añadir el grupo de botones de selección, la página tendrá este aspecto:

Aspecto de la página de búsqueda personalizada

Añadir el código de búsqueda OR a la página

A continuación, debe configurar el manejador JSF para que utilice la entrada del botón de selección para decidir la función de búsqueda que debe utilizar.
  1. Pulse con el botón derecho del ratón en una zona vacía de la página y pulse Editar código de página del menú. El archivo customersearch.egl se abrirá en el editor.
  2. Con las declaraciones de variable en la parte superior del manejador, añada este línea de código:
    andOr CHAR(3);
    Más adelante, enlazará esta variable a los botones de selección. Contiene el valor "AND" u "OR," dependiendo del botón de selección que se pulse en la página.
  3. Sustituya la llamada a función por NameAndStateSearch_And con el siguiente código:
    if (andOr == "AND")
    			SearchLibrary.NameAndStateSearch_And(
    			searchTerms.LastName, 
    searchTerms.State, searchResults);
    		else
    			SearchLibrary.NameAndStateSearch_Or(
    				searchTerms.LastName, 
    searchTerms.State, searchResults);
    		end
    Toda la función tendrá ahora el aspecto del código siguiente:
    function searchFunction()
    		searchTerms.LastName = searchTerms.LastName+"%";
    
    if (andOr == "AND")
    			SearchLibrary.NameAndStateSearch_And(
    			searchTerms.LastName, 
    searchTerms.State, searchResults);
    		else
    			SearchLibrary.NameAndStateSearch_Or(
    				searchTerms.LastName, 
    searchTerms.State, searchResults);
    		end
    
      resultMessage = " clientes encontrados." ;
    numberOfResults = searchResults.getSize(); 
    	end

    Esta función ahora llama a distintas funciones según el valor de la variable andOr.

  4. Guarde y cierre el archivo.
  5. Vuelva a la página customersearch.jsp.
  6. Desde la vista Datos de página, enlace la variable andOr - char(3) con el grupo de botones de selección arrastrándola al grupo de botones de selección de la página.
  7. Enlace la función searchFunction() con el botón Someter de la página.
  8. Guarde la página.
  9. Pruebe la página.

Al probar la página, intente utilizar las nuevas funciones de botón de selección. Debe pulsar uno de los botones de selección para que la página de búsqueda funcione correctamente.

Esta página de búsqueda sigue siendo difícil de utilizar, ya que en la base de datos no hay muchos registros de ejemplo y muchos estados entre los que realizar averiguaciones. En la próxima lección, cambiará el campo de entrada Estado por un recuadro combinado que listará todos los estados utilizados en la base de datos.

Este es el código completo del archivo customersearch.egl. Si ve errores marcados por símbolos X rojos en el archivo, asegúrese de que el código coincida con el código de este archivo:Archivo customersearch.egl completado después de la lección 3.

Punto de comprobación de lección

Ahora dispone de una página de búsqueda que puede realizar búsquedas en función de dos parámetros simultáneamente, o buscar resultados que coincidan con uno, pero no con el otro.
En esta lección, ha aprendido a realizar las tareas siguientes:
  • Añadir una búsqueda de tipo OR a la función de búsqueda de la biblioteca EGL
  • Añadir un grupo de botones de selección a la página de búsqueda
  • Añadir el código de búsqueda OR al manejador JSF
  • Enlazar la función de búsqueda nueva al grupo de botones de selección
Ahora está preparado para empezar la lección 4: Llenar un recuadro combinado dinámicamente.
< Anterior | Siguiente >

Comentarios