
6.- Mantenimiento Fichero
En este capítulo veremos como añadir, modificar, consultar y modificar
socios de nuestra agenda. Pero para ello no utilizaremos ningún menú.
El funcionamiento será el siguiente: Todo se realizará desde la misma ventana
y no tendremos opciones de menú. Si al introducir un código, éste existe,
nos mostrara su contenido y nos preguntará si queremos modificarlo o borrarlo. Si no
existe nos dará la oportunidad de crearlo. Cuando modificamos utilizamos
el mismo desarrollo que para las altas, solo que los campos aparecen en
reverso, para diferenciar. Veréis que bien queda y que fácil es.
El párrafo que teníamos
en el capítulo anterior llamado SOCIOS. Ahora se sustituye por lo que
viene a continuación.
Las frases en éste color son comentarios.
»»
VENTANA Y PANTALLA DE SOCIOS |
Creamos
nuestra ventana independiente del programa principal, donde
haremos todo el proceso del mantenimiento del archivo. Dibujamos
los campos que van a aparecer para luego colocar su contenido. |
SOCIOS.
MOVE 16 TO WINLIN MOVE 54 TO WINCOL.
MOVE " CONTACTOS " TO WINTIT MOVE 11 TO WINTITLO.
MOVE WCB TO WIN (1).
DISPLAY WIN (1) LINE 3 COL 3 LOW ERASE CONTROL
"WINDOW-CREATE, FCOLOR=WHITE, BCOLOR=BROWN".
SOCIO0.
DISPLAY " " LINE 1 COL 1 ERASE CONTROL "FCOLOR=WHITE".
DISPLAY "CODIGO ....." LINE 2 COL 2.
DISPLAY RAYA LINE 3 COL 2 SIZE 52.
DISPLAY "NOMBRE ....." LINE 4 COL 2.
DISPLAY "DIRECCION .." LINE 5 COL 2.
DISPLAY "POBLACION." LINE 6 COL 2.
DISPLAY "C.POSTAL."LINE 6 COL 38.
DISPLAY "PROVINCIA .." LINE 7 COL 2.
DISPLAY RAYA LINE 8 COL 2 SIZE 52.
DISPLAY "TELEFONO ." LINE 9 COL 2.
DISPLAY "MOVIL ...." LINE 10 COL 2.
DISPLAY RAYA LINE 11 COL 2 SIZE 52.
DISPLAY "E-MAIL ..." LINE 12 COL 2.
DISPLAY "DIRECCION PAGINA WEB COMPLETA ......."
LINE 13 COL 2.
DISPLAY ">"LINE 14 COL 2.
DISPLAY RAYA LINE 15 COL 2 SIZE 52.
INITIALIZE REGAGE. |
 |
|
»»
ACEPTANDO EL CODIGO |
Aceptamos
el código y si existe nos vamos a mostrar el contenido de los
campos en el párrafo SOCI-MOS (que se verá mas adelante). Si no
existe, pedimos confirmación para crearlo. |
Utilizamos
la variable C4 para guardar provisionalmente el código.
SOCI-CERO.
DISPLAY SPACES LINE 2 COL 16 SIZE 40.
ACCEPT C4 LINE 2 COL 16 PROMPT LOW NO BEEP
ON EXCEPTION ESCA NEXT SENTENCE.
DISPLAY SPACES LINE 2 COL 16 SIZE 30.
IF ESCA = 27 GO SOCIFIN.
SOCI-MIRA.
IF C4 < 1 GO SOCI-CERO.
MOVE C4 TO AGECOD DC4 DISPLAY DC4 LINE 2 COL 16 LOW.
MOVE 0 TO MODI.
READ AGENDA INVALID KEY GO SOCI-ABRIR.
GO SOCI-MOS.
SOCI-ABRIR.
DISPLAY "CREAR EL CONTACTO ??" LINE 2 COL 22
LOW REVERSE.
ACCEPT OP LINE 2 COL 44 OFF NO BEEP
ON EXCEPTION ESCA NEXT SENTENCE.
DISPLAY SPACES LINE 2 COL 22 SIZE 30.
IF OP = "S" NEXT SENTENCE ELSE GO
SOCI-CERO. |
|
»»
ACEPTANDO LOS CAMPOS |
Cada
uno de éstos párrafos nos va a servir para aceptar cada uno de
los campos de nuestro fichero. Cada párrafo es igual, si estamos
creando hacemos el ACCEPT LOW y si estamos modificando lo hacemos
LOW REVERSE, UPDATE, para que por defecto nos de el valor del
campo. Luego si pulsamos ESCAPE o las felcas, se moverá
dependiendo si estamos modificando o creando. La variable MODI, es
la que utilizamos para diferenciar modificación de creación.
Siempre al terminar de aceptar cada campo lo volvemos a displayar
sin atributos. |
SOCI-UNO.
DISPLAY SPACES LINE 4 COL 16 SIZE 40.
IF MODI = 0 ACCEPT AGENOM LINE 4 COL 16 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGENOM LINE 4 COL 16 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY SPACES LINE 4 COL 16
SIZE 30 GO SOCI-CERO ELSE GO SOCI-MOS.
DISPLAY AGENOM LINE 4 COL 16 LOW.
SOCI-DOS.
DISPLAY SPACES LINE 5 COL 16 SIZE 40.
IF MODI = 0 ACCEPT AGEDOM LINE 5 COL 16 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGEDOM LINE 5 COL 16 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 DISPLAY SPACES LINE 5 COL 16 SIZE 40
GO SOCI-UNO.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-UNO.
DISPLAY AGEDOM LINE 5 COL 16 LOW.
Si pulsamos ESCAPE y estamos creando nos
vamos al campo anterior. Si estamos modificando nos salimos de
modificar.
Si pulsamos FLECHA ARRIBA y estamos modificando reestablece el
valor del campo y se va al campo anterior, si estamos creando no
hace nada.
SOCI-TRES.
DISPLAY SPACES LINE 6 COL 16 SIZE 20.
IF MODI = 0 ACCEPT AGEPOB LINE 6 COL 16 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGEPOB LINE 6 COL 16 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY SPACES LINE 6 COL 16
SIZE 20 GO SOCI-DOS ELSE GO SOCI-MOS.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-DOS.
DISPLAY AGEPOB LINE 6 COL 16 LOW.
SOCI-CUATRO.
DISPLAY " " LINE 6 COL 48.
IF MODI = 0 ACCEPT AGEPOS LINE 6 COL 48 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGEPOS LINE 6 COL 48 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY " " LINE 6 COL 48
GO SOCI-TRES ELSE GO SOCI-MOS.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-TRES.
DISPLAY AGEPOS LINE 6 COL 48 LOW.
SOCI-CINCO.
DISPLAY SPACES LINE 7 COL 16 SIZE 20.
IF MODI = 0 ACCEPT AGEPRO LINE 7 COL 16 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGEPRO LINE 7 COL 16 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY SPACES LINE 7 COL 16
SIZE 20 GO SOCI-CUATRO ELSE GO SOCI-MOS.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-CUATRO.
DISPLAY AGEPRO LINE 7 COL 16 LOW.
SOCI-SEIS.
DISPLAY SPACES LINE 9 COL 16 SIZE 20.
IF MODI = 0 ACCEPT AGETEL LINE 9 COL 16 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGETEL LINE 9 COL 16 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY SPACES LINE 9 COL 16
SIZE 20 GO SOCI-CINCO ELSE GO SOCI-MOS.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-CINCO.
DISPLAY AGETEL LINE 9 COL 16 LOW.
SOCI-SIETE.
DISPLAY SPACES LINE 10 COL 16 SIZE 20.
IF MODI = 0 ACCEPT AGEMOV LINE 10 COL 16 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGEMOV LINE 10 COL 16 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY SPACES LINE 10 COL 16
SIZE 20 GO SOCI-SEIS ELSE GO SOCI-MOS.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-SEIS.
DISPLAY AGEMOV LINE 10 COL 16 LOW.
SOCI-OCHO.
DISPLAY SPACES LINE 12 COL 16 SIZE 30.
IF MODI = 0 ACCEPT AGEMAI LINE 12 COL 16 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGEMAI LINE 12 COL 16 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY SPACES LINE 12 COL 16
SIZE 30 GO SOCI-SIETE ELSE GO SOCI-MOS.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-SIETE.
DISPLAY AGEMAI LINE 12 COL 16 LOW.
SOCI-NUEVE.
DISPLAY SPACES LINE 14 COL 4 SIZE 40.
IF MODI = 0 ACCEPT AGEWEB LINE 14 COL 4 LOW NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE ELSE
ACCEPT AGEWEB LINE 14 COL 4 LOW REVERSE NO BEEP UPDATE
ON EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 IF MODI = 0 DISPLAY SPACES LINE 14 COL 4
SIZE 40 GO SOCI-OCHO ELSE GO SOCI-MOS.
IF MODI = 1 IF ESCA = 52 PERFORM SOCI-MOS GO SOCI-OCHO.
DISPLAY AGEWEB LINE 14 COL 4 LOW.
IF MODI = 1 GO SOCI-OCHO.
Aqui preguntamos si todos los datos son
correctos. Si la respuesta es positiva movemos los valores a la
clave alternada y grabamos. En caso de error en la grabación
mostraríamos el mensaje con el error.
SOCI-VEINTE.
DISPLAY "CORRECTO ?" LINE 16 COL 2.
ACCEPT OP LINE 16 COL 16 PROMPT NO BEEP LOW
ON EXCEPTION ESCA NEXT SENTENCE.
DISPLAY SPACES LINE 16 SIZE 50.
IF ESCA = 27 OR OP = "N" GO SOCI-NUEVE.
IF OP = "S" NEXT SENTENCE ELSE GO SOCI-VEINTE.
MOVE AGECOD TO AGECOD1 MOVE AGENOM TO AGENOM1.
WRITE REGAGE INVALID KEY
MOVE "GRABAR UN REGISTRO" TO MOTIVO PERFORM MENERROR.
GO SOCIO0. |
|
»»
MOSTRANDO LOS CAMPOS, MODIFICANDO Y BORRANDO. |
Este
apartado comprende 4 párrafos. Uno primero donde mostramos el
contenido actual de los campos que componen el registro.
Otro donde preguntamos sobre la acción a realizar. Otro para
borrar el registro, otro para grabar los cambios realizados y uno
mas para abandonar el mantenimiento. |
Aquí
mostramos el contenido de los campos. Y actualizamos el valor de
la variable MODI a 1.
SOCI-MOS.
DISPLAY AGENOM LINE 4 COL 16 LOW.
DISPLAY AGEDOM LINE 5 COL 16 LOW.
DISPLAY AGEPOB LINE 6 COL 16 LOW.
DISPLAY AGEPOS LINE 6 COL 48 LOW.
DISPLAY AGEPRO LINE 7 COL 16 LOW.
DISPLAY AGETEL LINE 9 COL 16 LOW.
DISPLAY AGEMOV LINE 10 COL 16 LOW.
DISPLAY AGEMAI LINE 12 COL 16 LOW.
DISPLAY AGEWEB LINE 14 COL 4 LOW.
MOVE 1 TO MODI.
SOCI-MOS1.
DISPLAY SPACES LINE 16 COL 1 SIZE 50.
DISPLAY "(M)ODIFICA" LINE 16 COL 2 LOW REVERSE.
DISPLAY "(B)ORRAR " LINE 16 COL 13 LOW REVERSE.
DISPLAY "(F)GRABAR " LINE 16 COL 24 LOW REVERSE.
DISPLAY " FIN " LINE 16 COL 35 LOW REVERSE.
ACCEPT OP LINE 16 COL 49 OFF NO BEEP
ON EXCEPTION ESCA NEXT SENTENCE.
DISPLAY SPACES LINE 16 SIZE 50.
IF ESCA = 27 GO SOCIO0.
IF OP = "B" GO SOCI-BORRAR.
IF OP = "F" PERFORM SOCI-GRABAR GO SOCIO0.
IF OP = "M"
DISPLAY "" LINE 16 COL 2 LOW REVERSE
DISPLAY " FIN" LINE 16 COL 12 LOW REVERSE
GO SOCI-UNO.
GO SOCI-MOS1.
Si os fijáis la modificación nos lleva de
nuevo a la introducción de los campos, solo que el valor de MODI
ahora es 1 y eso indica que estamos en modificación.
Confirmación de borrado del registro.
SOCI-BORRAR.
DISPLAY "BORRARLO ..?" LINE 16 COL 2.
ACCEPT OP LINE 16 COL 16 PROMPT NO BEEP LOW
ON EXCEPTION ESCA NEXT SENTENCE.
DISPLAY SPACES LINE 16 SIZE 50.
IF OP = "N" OR ESCA = 27 GO SOCI-MOS1.
IF OP = "S" NEXT SENTENCE ELSE GO SOCI-BORRAR.
DELETE AGENDA INVALID KEY
MOVE "BORRAR UN REGISTRO" TO MOTIVO PERFORM MENERROR.
GO SOCIO0.
Regrabamos el registro con los datos actuales.
SOCI-GRABAR.
MOVE AGECOD TO AGECOD1 MOVE AGENOM TO AGENOM1.
REWRITE REGAGE INVALID KEY
MOVE "REGRABAR UN REGISTRO" TO MOTIVO PERFORM
MENERROR.
Abandonamos el mantenimiento del archivo, cerramos la ventana y volvemos a la
pantalla principal.
SOCIFIN.
DISPLAY WIN (1) CONTROL "WINDOW-REMOVE".
GO TRES. |
 |
El siguiente capítulo,
mostrará como hacer una consulta de los datos por pantalla, utilizando para
ello un scroll.
|
|