Cómo usar una lista desplegable dinámica de multiselección

Cómo:

Puede añadir una lista dinámica, desplegable, de multiselección, rellenado con valores activos, recuperados desde un origen de datos. El origen de datos se asigna de forma dinámica, sin ningún límite máximo fijado para la longitud de los registros.


Principio de página

x
Procedimiento: Cómo Añadir una lista desplegable dinámica de multiselección

Este procedimiento emplea el comando –HTMLFORM de Dialogue Manager para rellenar una lista desplegable con los valores de un origen de datos. Utilice esta técnica cuando los valores de selección varíen con frecuencia y, así, garantizar que los valores de la lista siempre sean válidos y actuales.

Para más detalles acerca de-HTMLFORM, consulte Cómo diseñar una página HTML para la visualización de informes.

  1. Cree un procedimiento para rellenar una lista desplegable:
    1. Asigne un archivo de texto que contenga los valores dinámicos.

      Por ejemplo, en Windows, el comando es

      FILEDEF textfile DISK APP\textfile.TXT

      donde:

      textfile

      Es el nombre del archivo que contiene los valores.

      APP

      Es el nombre de la aplicación, bajo APPROOT, que contiene el archivo físico.

      Consulte Cómo definir y asignar archivos de WebFOCUS para más detalles sobre los comandos específicos de cada plataforma.

    2. Incluya un comando DEFINE para crear un campo temporal que identifique los valores.
    3. Incluya el siguiente comando para guardar los valores en el archivo asignado.
      ON TABLE HOLD FORMAT ALPHA as textfile

      donde:

      textfile

      Es el nombre del archivo. El nombre puede tener de 1 a 8 caracteres.

    4. Incluya el siguiente comando para enviar la salida del informe a la página de inicio encargada de mostrar los valores.
      -HTMLFORM valuespg

      donde:

      valuespg

      Es el nombre de la página de inicio.

  2. Cree la página de inicio. Haga un comentario para indicar el lugar en que aparecen los valores.
    !IBI.FIL.textfile;

    o

    <!--WEBFOCUS TABLE textfile-->

    donde:

    textfile

    Es el nombre del archivo que contiene los valores.

    Nota: La línea de comentarios HTML debe cerrarse con una etiqueta de cierre de comentario (-->) o un corchete angular de cierre (>), sin ninguna otra etiqueta HTML.

    Observe que el archivo de texto se ha asignado en la memoria de forma dinámica y que no tiene límite de longitud de registros.

    El Servidor de informes debe ser capaz de localizar la página de inicio utilizando APP PATH o EDAPATH. Consulte Cómo escoger una lógica de ruta de búsqueda para más detalles sobre las rutas de búsqueda.

  3. Cree un procedimiento que admita la presencia de múltiples valores para generar un informe dinámico.


Ejemplo: Cómo añadir una lista desplegable dinámica de multiselección

En este ejemplo se utiliza WebFOCUS para Windows. Si está en otra plataforma, sustituya el comando FILEDEF por el comando correspondiente de la plataforma. Consulte Cómo definir y asignar archivos de WebFOCUS.

Nota: Para más información acerca de dónde almacenar los archivos creados en este ejemplo, consulte Cómo definir y asignar archivos de WebFOCUS.

  1. Cree un procedimiento llamado DYNAMMUL, para rellenar una lista desplegable del campo COUNTRY, en el origen de datos SHORT.

    Procedimiento: DYNAMMUL.FEX

    FILEDEF DYNAMLST DISK APPS\DYNAMLST.TXT
    DEFINE FILE SHORT
    OPTCOUNTRY/A40 = '<option>'|COUNTRY;
    END
    TABLE FILE SHORT
    SUM OPTCOUNTRY
    BY COUNTRY NOPRINT
    ON TABLE HOLD FORMAT ALPHA AS DYNAMLST
    END
    -RUN
    -HTMLFORM DYNAMIC2
    -RUN
  2. Cree una página de inicio llamada DYNAMIC2.HTM. El Servidor de informes debe ser capaz de localizar la página en APP PATH o EDAPATH. Consulte Lógica de aplicaciones WebFOCUS para más detalles sobre las rutas de búsqueda.

    La página de inicio, de ejemplo, utiliza el miniservidor.

    Página de inicio: DYNAMIC2.HTM

    <HTML>
    <TITLE> DYNAMIC DROP-DOWN LIST REPORT </TITLE>
    <H4> PROJECTED RETURN BY COUNTRY </H4>
    <FORM ACTION="/ibi_apps/WFServlet" METHOD="GET">
    <INPUT TYPE="HIDDEN" NAME="IBIF_ex" VALUE="MULRPT">
    <SELECT NAME="COUNTRY" SIZE="3" MULTIPLE>
    <!--WEBFOCUS TABLE DYNAMLST-->
    </SELECT>
    <BR><BR><INPUT TYPE="SUBMIT" VALUE="RUN REPORT!"></FORM>
    </BODY>
    </HTML>

    Nota: La línea de comentarios HTML debe cerrarse con una etiqueta de cierre de comentario (-->) o un corchete angular de cierre (>), sin ninguna otra etiqueta HTML.

  3. Cree un procedimiento llamado MULRPT, para mostrar el retorno previsto para un país, o países, seleccionado. (Si no se ha seleccionado ningún país, se mostrará el retorno previsto para todos los países del origen de datos).

    Procedimiento: MULRPT.FEX

    -SET &COUNTER=1;
    TABLE FILE SHORT
    SUM PROJECTED_RETURN
    BY COUNTRY
    -IF &COUNTRY.EXISTS THEN GOTO LOOP1 ELSE GOTO DONE;
    -LOOP1
    WHERE COUNTRY EQ '&COUNTRY'
    -IF &COUNTRY0.EXISTS NE 1 THEN GOTO OUTLOOP;
    -REPEAT OUTLOOP FOR &COUNTER FROM 2 TO &COUNTRY0;
    OR '&COUNTRY.&COUNTER'
    -OUTLOOP
    -DONE
    ON TABLE SET PAGE-NUM OFF
    ON TABLE SET STYLE *
    TYPE=REPORT, GRID=OFF,$
    ENDSTYLE
    END

    Nota: En tiempo de ejecución, &COUNTRY0 contiene el número de paísese seleccionados de la lista desplegable. Por ejemplo, si hay tres países seleccionados, &COUNTRY queda establecido en 3, &COUNTRY y &COUNTRY1 se establecen en el primer país seleccionado; &COUNTRY2, en el segundo; y &COUNTRY3 en el tercero.

    Este ejemplo es para los entornos de WebFOCUS que no tengan activada la función de aviso automático de ampersands (variable IBIF_wfdescribe=OFF de configuración del Cliente WebFOCUS). Para más información sobre el parámetro de configuración IBIF_wfdescribe, consulte el de Guía de seguridad y administración de WebFOCUS.

    Si el entorno tiene activada la función de aviso automático de ampersands, podrá añadir el siguiente parámetro al formulario, para desactivarla en la solicitud enviada a través de este formulario.

    <INPUT TYPE="HIDDEN" NAME="IBIF_wfdescribe" VALUE="OFF">
    add the above line to example file DYNAMIC2.HTM after line 
    <FORM ACTION="/ibi_apps/WFServlet" METHOD="GET"> 
  4. Ejecute el procedimiento DYNAMMUL. Además, puede usar JavaScript para ejecutar un procedimiento cuando se abra la página de inicio.

    Una página similar a las siguientes:

  5. Seleccione CANADA, HONG KONG y MEXICO. Pulse EJECUTAR INFORME para recibir el informe:


WebFOCUS