7.- La Pantalla de Consulta
Vamos con la segunda pantalla de nuestra aplicación, una pantalla mucho mas compleja y efectiva que la de mantenimiento. Si bien en esa primera nos limitabamos a colocar campos de edición para introducir los datos, en ésta segunda vamos a hacer una consulta completa y en la que aparecerán nuevos controles a los que aplicaremos nuevos eventos.

Para crear otra pantalla dentro de nuestro proyecto debemos seleccionar la opción New , del menú de File . Para el estilo de la ventana marcamos: Pop-up Windows, Thin y Title Bar. La llamamos CONSULTA y en el título de la misma le ponemos Consulta de contactos.

A continuación os pongo una imagen de como debe de quedar la pantalla con todos sus controles, es una imagen en tiempo de desarrollo y seguidamente os explico las características de cada uno. La imagen no está a tamaño real, está exactamente a un 70% para que pudiera entrar en la página.

Pantalla de Consulta de la aplicación Agenda


TABLE

El control mas importante que contiene es la tabla, llamada por PowerCobol Table. La misma nos va a servir para incluir una lista separada por columnas con todos nuestros contactos, la cual podremos clasificar por cada uno de los campos que contiene. Las propiedades son las siguientes:

Propiedades de la Tabla


Le llamaremos como véis TABLA y tendrá todas las columnas que véis y una mas que no sale, llamada E-MAIL. Para cada una de las columnas están serán sus características:

CAPTION PICTURE WIDTH ALIGNMENT SCROLL LOCK
CODIGO ZZZZ 40 RIGHT SI
NOMBRE X(30) 200 LEFT SI
DOMICILIO X(30) 200 LEFT NO
C.P. 99999 40 RIGHT NO
POBLACION X(20) 132 LEFT NO
PROVINCIA X(15) 100 LEFT NO
TIPO X(12) 80 LEFT NO
TELEFONO X(20) 132 LEFT NO
TELEFONO MOVIL X(20) 132 LEFT NO
E-MAIL X(30) 200 LEFT NO


He respetado los nombres de las propiedades en inglés, porque de esa manera os saldrán a vosotros. Indicaros que la opción Scroll Lock, lo que posibilita es que los campos marcados con esa propiedad no se muevan al desplazarnos horizontalmente por la tabla, con lo que el código y el nombre siempre estarán disponibles a la vista. Si os dais cuenta, al principio le he dicho que solo tiene una línea (Rows), una vez en ejecución se le irán añadiendo las líneas que sean necesarias según registros tengamos.

GRAPH

Para la representación gráfica de los datos, PowerCobol dispone de éste control, que aunque no muy extenso en sus posibilidades si es efectivo en cuanto a su cometido. Gracias a el, vamos a representar de forma gráfica la cantidad de contactos que tenemos en nuestro fichero según su tipo. Las propiedades de dicho gráfico al cual llamaremos desde nuestr aplicación GRAFICO, son las siguientes:

Propiedades del Gráfico


Lo mas reseñable de éste control es indicarle el tipo de gráfico que vamos a representar, vertical, horizontal, de lineas o en forma de queso, además de los límites tanto superior como inferior para la representación. PRINT

Para evitar tener que confeccionar un listado y puesto que PowerCobol posee un control para imprimir los controles, podemos apoyarnos en él y aprovechar su potencia para imprimir la tabla y así conseguir un listado profesional sin escribir ni una sola línea de código. Para ello y antes de nada tenemos que tener en cuenta que la propiedad PRINT de nuestros controles, tiene que estar desactivada excepto para el control tabla que será el que se imprima. Además PowerCobol con éste control, me refiero a la tabla, tiene el privilegio de imprimirla completamente, aunque su contenido no quepa en la pantalla, con lo que ya veréis que bien queda y que fácil es conseguirlo.

Por supuesto podremos continuar imprimiendo utilizando nuestras definiciones de líneas descritas en la Working-Storage Section, pero para determinados casos podemos aprovecharnos de éste control. Sus propiedades son las siguientes:

Propiedades del control Print


Con éstas propiedades os garantizo que el listado queda muy  bien en modo apaisado y sobre un papel tipo A4. Este control carece de eventos.

DEMAS CONTROLES

Como podéis apreciar al resto de controles, son los habituales, LABEL y BUTTON, que nos ayudan a dar forma a la pantalla de consulta.

Antes de seguir os diré como se llaman cada uno de los campos que figuran a la derecha y que rellenaremos con los totales y subtotales. Además el fondo de dichos campos se ha puesto en colores que utilizaremos también para cada una de las barras del gráfico y así situar los datos mas rapidamente. El porque he utilizado LABEL en vez de EDIT es muy sencillo, para evitar que dichos campos se puedan modificar o tomar el foco. Al ponerlos como LABEL el compilador los considera como DISPLAYS normales y no podemos ni modificarlos ni editarlos ni nada similar.

Para poner el número de contactos de tipo Personal, el LABEL se llama DE1.
Para poner el número de contactos de tipo Profesional, el LABEL se llama DE2.
Para poner el número de contactos de tipo Familiar, el LABEL se llama DE3.
Para poner el número de contactos de tipo de Empresa, el LABEL se llama DE4.
Para poner el número de contactos de tipo Sanitario, el LABEL se llama DE5.
Para poner el número total de contactos, el LABEL se llama TOTAL.
Para poner el número de contactos Hombres, el LABEL se llama DEH.
Para poner el número de contactos Mujeres, el LABEL se llama DEM. 


Veamos los eventos a programar sobre dicho formulario. En éste capítulo veremos solo algunos y dejaremos el resto de eventos, así como la programación del resto de eventos de los demás controles para el siguiente capítulo.

Evento Programación Ayuda
SPECIAL-NAMES DECIMAL-POINT IS COMMA. Indicamos la coma como punto decimal.
FILE-CONTROL SELECT AGENDA ASSIGN TO "AGENDA.DAT"
ORGANIZATION INDEXED ACCESS DYNAMIC
RECORD KEY KEYAGE FILE STATUS STAAGE.

SELECT CLASI ASSIGN TO "CLASI.DAT".
Definición de nuestros archivos.

Para clasificar.
FILE FD  AGENDA  GLOBAL EXTERNAL
     LABEL RECORD STANDARD.
01  REGAGE.
     02  KEYAGE.
          03  AGECOD PIC 9999.
     02  AGENOM     PIC X(30).
     02  AGEDOM     PIC X(30).
     02  AGEPOS     PIC 99999.
     02  AGEPOB     PIC X(20).
     02  AGEPRO     PIC X(15).
     02  AGEGEN     PIC X.
     02  AGETIP     PIC 9.
     02  AGETEL     PIC X(20).
     02  AGEMOV     PIC X(20).
     02  AGEMAI     PIC X(30).
     02  AGEWEB     PIC X(40).

FD  CLASI GLOBAL  LABEL RECORD STANDARD.
01  REGCLA.
      02  CLACOD     PIC 9999.
      02  CLANOM    PIC X(30).
      02  CLADOM    PIC X(30).
      02  CLAPOS     PIC 99999.
      02  CLAPOB     PIC X(20).
      02  CLAPRO     PIC X(15).
      02  CLATIP      PIC X(12).
      02  CLATEL      PIC X(20).
      02  CLAMOV    PIC X(20).
      02  CLAMAI     PIC X(30).
Descripción de los ficheros a utilizar en nuestra aplicación. Al ponerle GLOBAL EXTERNAL conseguimos que los valores de los campos se pasen de una ventana a otra y por todos los controles de la ventana.







Esta definición corresponde al fichero que vamos a utilizar para la clasificación por las distintas columnas de la tabla.
WORKING 01  STAAGE      GLOBAL PIC XX.
01  MENSAJE IS  GLOBAL.
     02  FILLER  PIC X(7) VALUE "ERROR: ".
     02  NUMSTA  PIC 99BB.
     02  FILLER  PIC X(15) VALUE "POR EL MOTIVO:".
     02  NOMSTA  PIC X(15).
01  CCC          PIC 9999  GLOBAL.
01  TOPE        PIC 9999  GLOBAL..
01  AHIVA      PIC 9(4)   GLOBAL EXTERNAL.
Variable de estado.
Mensaje en caso de error al acceder al fichero.


Contador.
Tope de contador.
Variable.


El próximo capítulo abordará el evento OPENED, en el que se cargarán los datos en la tabla y se pondrán los totales por tipo, además de formar el gráfico y así terminaremos la pantalla de consulta.

Una vez concluido el diseño de la ventana, pinchamos sobre Project, Edit y a continuación pulsamos sobre el botón Add, para añadir esta ventana al proyecto y así poder compilar y ver como funciona. Una vez añadida pulsamos sobre el botón Ok y ya podemos ver en la pequeña ventana del proyecto que tenemos en la pantalla, como esta ventana de consulta está incluida.



Este artículo proviene de Cobol en español
http://www.escobol.com

La dirección de esta noticia es:
http://www.escobol.com/modules.php?name=Sections&op=viewarticle&artid=67