You are on page 1of 10

Minicomputadoras -1- Ing. Alberto Moreno C.

-
BASE DE DATOS CON VISUAL AGE RPG

Evento VKEYPRESS

Este evento se produce cuando se pulsa una tecla de mandato. Como ejemplos de
teclas de mandato se pueden citar AvPág, Pausa y Control. Para obtener una
descripción del valor devuelto, consulte el atributo de evento %Character. Si asocia
este evento con el componente lienzo, solamente tendrá que codificar una subrutina de
acción para todos los componentes que puedan responder a este evento.

Se aplica a los componentes

Lienzo Recuadro combinado Contenedor

Campo de entrada Recuadro de lista Edición de múltiples


líneas

Subarchivo

Ejemplo

Borrar un campo de entrada si se pulsa F5 cuando el campo tiene el foco de


entrada:

*...1....+....2....+....3....+....4....+....5....+...
.6....+....7....+.
CSRN01Factor1+++++++Opcode(E)+Factor2+++++++Result+++
+++++Len++D+HiLoEq
*
C EF1 BEGACT VKEYPRESS
*
C %character IFEQ '29'
C 'EF1' SETATR *BLANKS 'TEXT'
C ENDIF
*
C ENDACT
*

%character

Código de carácter generado por el evento.

Durante el evento VKeyPress, el atributo de evento %Character se devolverá como un


valor que representa la tecla no de carácter que se ha pulsado. Los valores son los
siguientes:

00 - Esc 13 - Fin 25 - Inter 37 - F14

01 - Tabulador 14 - Retroceso 26 - F2 38 - F15


derecha de página
Minicomputadoras -2- Ing. Alberto Moreno C.
-
02 - Tabulador 15 - Avance de 27 - F3 39 - F16
izquierda página

03 - Espacio 16 - Flecha 28 - F4 40 - F17


izquierda

04 - Retroceso 17 - Flecha 29 - F5 41 - F18


derecha

05 - Intro 18 - Flecha 30 - F6 42 - F19


(teclado arriba
numérico)

06 - Intro 19 - Flecha 31 - F7 43 - F20


abajo

07 - Mayús 20 - Bloqueo 32 - F8 44 - F21


Mayúsculas

08 - Control 21 - Bloqueo 33 - F9 45 - F22


Numérico

09 - Alt 22 - Bloqueo 34 - F11 46 - F23


Mayús

10 - Insertar 23 - Pausa 35 - F12 47 - F24

11 - Suprimir 24 - PetSis 36 - F13 56 - Alt

12 - Inicio

SETLL (Establecer límite inferior)

Sintaxis de formato libre SETLL{(EHMR)} arg-búsqueda nombre

Campo de
Código Factor 1 Factor 2 resultado Indicadores

SETLL (E) arg-búsqueda nombre (formato de archivo NR ER EQ


o registro)

La operación SETLL sitúa un archivo en el siguiente registro que tenga una clave o un
número relativo de registro mayor o igual al argumento de búsqueda. El archivo debe
ser un archivo controlado en cálculo (identificado con una F en la posición 18 de las
especificaciones de descripción de archivo).

La operación SETLL solo se puede utilizar con archivos OS/400. No se puede utilizar
con archivos locales.
Minicomputadoras -3- Ing. Alberto Moreno C.
-
El argumento de búsqueda, arg-búsqueda, debe ser la clave o el número de registro
relativo que se utiliza para recuperar el registro. Si el acceso es por clave, arg-búsqueda
puede ser una sola clave con el formato de un nombre de campo, una constante con
nombre, una constante figurativa o un literal.

Si nombre es un nombre de formato de registro para el que se ha de establecer el límite inferior, el


archivo se sitúa en el primer registro del tipo especificado que tenga una clave igual o mayor que el
argumento de búsqueda.

Al alcanzar el final del archivo en un archivo procesado por SETLL, puede emitirse otro SETLL para
volver a situar el archivo. Después de que una operación SETLL sitúe satisfactoriamente el archivo en
un registro, este se puede recuperar leyéndolo. Puede utilizarse *START y *END para posicionar el
archivo. Si especifica *START o *END en arg-búsqueda, tenga en cuenta lo siguiente:

• nombre debe ser un nombre de archivo.


• No puede utilizar *HIVAL ni *LOVAL como arg-búsqueda.
• No puede especificar los indicadores NR y EQ.
• Debe especificarse un indicador de error (posiciones 73-74) o el expansor 'E'.

Operación SETLL

*...1....+....2....+....3....+....4....+....5....+....6....+....7...+...
CSRN01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
C*
C* La totalidad de los 101 registros de ORDFIL se imprimirán.
C* El valor 101 ha sido previamente situado en ORDER. La operación
C* SETLL sitúa el archivo en el primer registro con el
C* valor de clave 101.
C* %EQUAL devolverá '1'.
C
C ORDER SETLL ORDFIL
C
C* El bucle DO siguiente procesa todos los registros que tienen
C* el mismo valor de clave.
C*
C IF %EQUAL
C DOU %EOF
C ORDER READE ORDFIL
C IF NOT %EOF
C EXCEPT DETAIL
C ENDIF
C ENDDO
C ENDIF
C
C*
C* La operación READE lee los registros 101 segundo, tercero y cuarto
C* igual que se leyó el registro 101 primero. Tras haber leído
C* el registro 101 cuarto, se intenta la operación READE.
C* Al no pertenecer el registro 102 al mismo grupo, %EOF devolverá
C* '1', se ignora la operación EXCEPT y finaliza el
C* bucle DOU.
Minicomputadoras -4- Ing. Alberto Moreno C.
-

Cómo situar archivos mediante la operación SETLL

SETGT (Establecer mayor que)

Sintaxis de formato libre SETGT{(EHMR)} arg-búsqueda nombre

Campo de
Código Factor 1 Factor 2 resultado Indicadores

SETGT (E) arg-búsqueda nombre (formato de archivo NR ER _


o registro)

La operación SETGT sitúa un archivo en el siguiente registro con una clave o número
relativo de registro mayor que el argumento de búsqueda. El archivo debe ser un
archivo controlado en cálculo (identificado con una F en la posición 18 de las
especificaciones de descripción de archivo).

La operación SETGT solo se puede utilizar con archivos OS/400.

El argumento de búsqueda, arg-búsqueda, debe ser la clave o el número de registro


relativo que se utiliza para recuperar el registro. Si el acceso es por clave, arg-búsqueda
puede ser una sola clave con el formato de un nombre de campo, una constante con
nombre, una constante figurativa o un literal.

Si la operación SETGT no es satisfactoria (ningún registro cumple la condición), el archivo se


posiciona al final del archivo.

Operación SETGT

*...1....+....2....+....3....+....4....+....5....+....6....+....7...
CSRN01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
Minicomputadoras -5- Ing. Alberto Moreno C.
-
C* Este ejemplo muestra cómo situar el archivo de modo que READ
C* lea el registro siguiente. El argumento de búsqueda, KEY, especificado
C* para la operación SETGT tiene el valor 98; por lo tanto, SETGT sitúa
C* el archivo antes del primer registro de formato de archivo FILEA que
C* tiene un valor de campo de clave mayor que 98. El archivo se posiciona
C* antes del primer registro con un valor de clave de 100. La operación
C* READ lee el registro que tiene un valor igual a 100 en su campo de
C* clave.
C
C KEY SETGT FILEA
C READ FILEA 64
C*
C* Este ejemplo muestra cómo leer el último registro de un grupo de
C* registros con el mismo valor de clave y formato de un archivo descrito
C* por programa. El argumento de búsqueda, KEY, especificado por la
C* operación SETGT posiciona el archivo antes del primer registro de
C* archivo FILEB que tiene un valor de campo de clave mayor que 70.
C* El archivo se posiciona antes del primer registro con un valor de
C* clave de 80. La operación READP lee el último registro que tiene un
C* valor de 70 en su campo de clave.
C
C KEY SETGT FILEB
C READP FILEB 64

Figura 307. Cómo situar archivos mediante la operación SETGT

READS (Leer seleccionados)

Sintaxis de formato libre READS{(E)} nombre-subarchivo

Campo de
Código Factor 1 Factor 2 resultado Indicadores

READS (E) nombre-subarchivo _ ER EOF

La operación READS recupera los registros seleccionados de un componente de


subarchivo. Se lee el primer registro seleccionado del componente de subarchivo.
Minicomputadoras -6- Ing. Alberto Moreno C.
-
Si el estilo de selección de subarchivo es extendido o múltiple, se deselecciona el
registro. Si el estilo de selección del subarchivo es uno solo, el registro permanece
seleccionado. Una operación READS posterior lee de nuevo el mismo registro.

El operando nombre-subarchivo especifica el nombre del componente de subarchivo.

Si el campo de resultado está especificado, debe ser numérico sin posiciones


decimales. El número de índice de subarchivo del registro recuperado se coloca en el
campo del resultado.

Para manejar las excepciones de READS (códigos de estado de archivo mayores que
1000), puede especificarse el expansor de código de operación 'E' o un indicador de
error ER, pero no ambos. Para obtener más información sobre la gestión de errores,
consulte el apartado Excepciones/errores de archivo.

Puede especificar un indicador en las posiciones 75-76 que se activará cuando se dé


una condición EOF: es decir, cuando no haya registros seleccionados en el subarchivo.
Esta información puede obtenerse también a partir de la función incorporada %EOF,
que devuelve '1' si se produce una condición EOF y '0' en caso contrario.

Operación READS

*...1....+....2....+....3....+....4....+....5....+....6....+....7...
CSRN01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C*
C* SUBCUST es un componente subarchivo que muestra una lista de registros.
C* La operación READS lee los registros seleccionados en el subarchivo
C* visualizado uno por uno en el bucle do while. SCUSNO y SCUSNAM
C* son campos definidos en el subarchivo.
C*
C READS SUBCUST 27
C DOW *IN27 = *OFF
C*
C* Los campos SCUSNO, SCUSNAM pueden utilizarse aquí para procesar el
C* registro seleccionado que se ha leído.
C*
C READS SUBCUST 27
C ENDDO
C*
Minicomputadoras -7- Ing. Alberto Moreno C.
-

APLICACIONES :

1.- Mantenimiento de la tabla alumno generando el código del alumno, tal como se muestra en la
figura:

Los controles empleados:


Codigo => txtcod C(5)
Apelido => txtape C(15)
Nombre => Txtnom C(15)
Dos botones:
Btnsave => botón grabar inicialmente desactivado (Enabled)
BtnNew =>Botón nuevo

Codificación :
Minicomputadoras -8- Ing. Alberto Moreno C.
-
Minicomputadoras -9- Ing. Alberto Moreno C.
-
DELETE (Suprimir registro)

Sintaxis de DELETE{(EHMR)} {arg-búsqueda} nombre


formato libre

Campo
de
Código Factor 1 Factor 2 resultado Indicadores

DELETE arg- nombre NR ER _


(E) búsqueda (archivo,
formato de
registro o
subarchivo)

La operación DELETE suprime un registro. Cuando se ha suprimido un registro, no


puede volverse a recuperar.

Si no se especifica un argumento de búsqueda (arg-búsqueda), la operación DELETE


suprime el registro actual. El registro actual es el último registro recuperado. El registro
debe haber sido bloqueado por una operación de entrada anterior como, por ejemplo,
una operación CHAIN o READ.

Si se especifica un argumento de búsqueda (arg-búsqueda), debe contener una clave,


un número relativo de registro o un número de índice de subarchivo que identifique el
registro que debe suprimirse:

• Si el acceso es por clave, el operando nombre debe ser un archivo remoto. Si


existen registros duplicados para la clave, solo se suprime del archivo el primero
de los registros duplicados.

El arg-búsqueda puede ser una sola clave con el formato de un nombre de


campo, una constante con nombre, una constante figurativa o un literal.

• Si el acceso se efectúa por número de registro relativo o número de índice de


subarchivo, el argumento de búsqueda debe contener una constante o variable
numérica con cero posiciones decimales.

UPDATE (Modificar registro existente)

Campo
de
Código Factor 1 Factor 2 resultado Indicadores

UPDATE nombre estructura- _ ER _


(E) (archivo, datos
formato de
registro o
subarchivo)
Minicomputadoras -10- Ing. Alberto Moreno C.
-
La operación UPDATE modifica el último registro bloqueado que se ha recuperado para
procesarse desde un archivo o subarchivo de disco de actualización. No debe realizarse
ninguna otra operación en el archivo entre la operación de entrada que ha recuperado y
bloqueado el registro y la operación UPDATE.

Las operaciones como, por ejemplo, READ, READC, READE, READP, READPE y
CHAIN recuperan y bloquean un registro. Si dichas operaciones de entrada no se
realizan satisfactoriamente, no se bloquea el registro y no se puede emitir UPDATE. El
registro debe volverse a leer con el valor por omisión de blanco en el expansor de
operación para especificar una solicitud de bloqueo.

Después de una operación UPDATE satisfactoria, la siguiente operación de entrada


secuencial recupera el registro siguiente al registro actualizado.

Las operaciones UPDATE consecutivas para el mismo archivo o registro no son válidas.
Deben emitirse intercaladamente operaciones de lectura satisfactorias para posicionar y
bloquear el registro a actualizar.

El operando nombre debe ser el nombre de un archivo, subarchivos o formato de


regis
tro
Sintaxis de UPDATE{(E)} nombre {estructura-datos | que
formato libre %FIELDS(nombre{:nombre...})} debe

actualizarse. Si se especifica un nombre de archivo, dicho archivo debe estar descrito


por programa. Si se especifica un nombre de formato de registro, el archivo debe estar
descrito externamente. El nombre de formato de registro debe ser el nombre del último
registro que se ha leído del archivo; de lo contrario se produce un error.

Si se especifica el operando estructura-datos, el registro se actualiza directamente a


partir de la estructura de datos. Si nombre hace referencia a un archivo descrito por
programa (identificado mediante una F en la posición 22 de la especificación de
descripción de archivo), la estructura de datos puede ser cualquiera que tenga la misma
longitud que la longitud de registro declarada del archivo. Si nombre hace referencia a
un archivo descrito externamente, la estructura de datos debe estar definida con
EXTNAME(...:*INPUT) o LIKEREC(...:*INPUT). El registro actualizado se escribe
directamente desde la estructura de datos en el archivo.

Nota:
Si se han de actualizar solo algunos de los campos de un registro, en vez de
todos, utilice las especificaciones de salida y no la operación UPDATE.

Consulte la sección Soporte de valores nulos de base de datos, si desea obtener


información acerca de cómo leer registros con campos con posibilidad de nulos.

Aplicación 2.-

You might also like