1. FORMULARIO DE REGISTRO DE LECTORES…..
2. FORMULARIO DE REGISTRO DE BIBLIOTECARIOS
3. FORMULARIO DE FICHA DE PRESTAMOS
4. FORMULARIO DE DEVOLUCIONES DE LIBROS
5. EJEMPLO DE MENU PRINCIPAL
********************************************************************
AQUI ESTA EL EJEMPLO DE BUFFER…. BAJENLO E IMPRIMANLO
*******************************************************************
(Comando) | Alcance del bloqueo |
---|---|
ALTER TABLE | Toda la tabla |
APPEND | Encabezado de la tabla |
APPEND FROM | Encabezado de la tabla |
APPEND FROM ARRAY | Encabezado de la tabla |
APPEND MEMO | Registro activo |
BLANK | Registro activo |
BROWSE, CHANGE y EDIT | Registro actual y todos los registros de campos con alias de tablas relacionadas cuando comienza la edición de un campo |
CURSORSETPROP( ) | Depende de los parámetros |
DELETE | Registro activo |
DELETE NEXT 1 | Registro activo |
DELETE RECORD n | Registro n |
DELETE de más de un registro | Toda la tabla |
DELETE – SQL | Registro activo |
GATHER | Registro activo |
INSERT | Toda la tabla |
INSERT – SQL | Encabezado de la tabla |
MODIFY MEMO | Registro actual cuando comienza la edición |
READ | Registro actual y todos los registros de campos con alias |
RECALL | Registro activo |
RECALL NEXT 1 | Registro activo |
RECALL RECORD n | Registro n |
RECALL de más de un registro | Toda la tabla |
REPLACE | Registro actual y todos los registros de campos con alias |
REPLACE NEXT 1 | Registro actual y todos los registros de campos con alias |
REPLACE RECORD n | Registro n y todos los registros de campos con alias |
REPLACE de más de un registro | Toda la tabla y todos los archivos de campos con alias |
SHOW GETS | Registro actual y todos los registros de campos con alias |
TABLEUPDATE( ) | Depende del almacenamiento en búfer |
UPDATE | Toda la tabla |
UPDATE – SQL | Toda la tabla |
Ejemplo: bloqueo automático
En el ejemplo siguiente, el usuario bloquea automáticamente el encabezado de la tabla; para
ello, anexa registros de otra tabla, aunque Lectores se haya abierto como un archivo
compartido.
SET EXCLUSIVE OFF USE Lectores APPEND FROM Libros FOR AñoEd = 2008
Bloqueo manual
Puede bloquear manualmente un registro o una tabla mediante las funciones de bloqueo.
Para bloquear manualmente un registro o una tabla
- Utilice uno de estos comandos:
RLOCK() LOCK() FLOCK()
RLOCK( ) y LOCK( ) son idénticos y bloquean uno o más registros. FLOCK( ) bloquea un archivo.
Las funciones LOCK( ) y RLOCK( ) pueden aplicarse a un encabezado de tabla.
Si especifica 0 como el registro para LOCK( ) o RLOCK( ) y la prueba indica que el encabezado está desbloqueado,
la función bloqueará el encabezado y devolverá True (.T.).
Una vez bloqueado un registro o una tabla, asegúrese de liberar el bloqueo mediante el comando UNLOCK lo
antes posible para proporcionar acceso a otros usuarios.
Estas funciones de bloqueo manual realizan las siguientes acciones:
Comprueban el estado de bloqueo del registro o la tabla.Si la prueba indica que el registro está desbloqueado, bloquean el registro o la tabla y devuelven True (.T.).
Si no se puede bloquear el registro o la tabla, vuelven a intentarlo, dependiendo del valor actual de SET REPROCESS.
Devuelven True (.T.) o False (.F.), indicando si el intento de bloqueo ha tenido éxito o no.
Sugerencia Si desea comprobar el estado de bloqueo de un registro en la sesión sin bloquear el registro,
use la función ISRLOCKED( ) o ISFLOCKED( ).
Si falla el intento de bloquear un registro o una tabla, el comando SET REPROCESS y la rutina de error actual
determinarán si vuelve a intentarse el bloqueo. SET REPROCESS afecta al resultado de un intento de bloqueo
sin éxito.
Puede controlar el número de intentos de bloqueo o el período de tiempo durante el cual se intenta un bloqueo
mediante SET REPROCESS.
Ejemplo: bloqueo manual
El ejemplo siguiente abre la tabla customer
para acceso compartido y utiliza FLOCK( ) para intentar bloquearla.
Si la tabla se bloquea con éxito, REPLACE ALL actualizará todos sus registros. UNLOCK libera el bloqueo de archivo.
Si el archivo no puede bloquearse porque otro usuario haya bloqueado el archivo o uno de sus registros, se mostrará
un mensaje.
Desbloquear datos
Después de establecer un bloqueo de registro o de archivo y completar una operación de datos en un entorno
compartido, deberá liberar el bloqueo lo antes posible. Hay varios modos de liberar los bloqueos. En algunos
casos, basta con desplazarse al registro siguiente para desbloquear los datos. En otros casos es preciso ejecutar
comandos explícitos.
Para desbloquear un registro que se ha bloqueado automáticamente, sólo necesitará mover el puntero de registro,
aunque haya establecido MULTILOCKS ON. No obstante, deberá eliminar explícitamente el bloqueo de un
registro que haya bloqueado manualmente; mover el puntero de registro no es suficiente.
En la tabla siguiente se describen los efectos que producen diversos comandos sobre el bloqueo manual
y automático de registros y tablas.
(Comando) | Efecto |
---|---|
UNLOCK | Libera los bloqueos de registro y archivo en el área de trabajo actual. |
UNLOCK ALL | Libera todos los bloqueos de todas las áreas de trabajo de la sesión actual. |
SET MULTILOCKS OFF | Activa la liberación automática del bloqueo actual al asegurar un bloqueo nuevo. |
FLOCK( ) | Libera todos los bloqueos de registro del archivo afectado antes de bloquear el archivo. |
CLEAR ALL, CLOSE ALL, USE, QUIT |
Libera todos los bloqueos de registro y archivo. |
END TRANSACTION | Libera los bloqueos automáticos. |
TABLEUPDATE( ) | Libera todos los bloqueos antes de actualizar la tabla. |
Precaución Si se ha bloqueado automáticamente un registro en una función definida por el usuario y
se desplaza el puntero fuera del registro y se vuelve a colocar sobre él, el bloqueo se liberará. Utilice el
almacenamiento de tablas en búfer para evitar este problema.
SET REPROCESS TO (Comando) | Especifica cuántas veces o durante cuánto tiempo intenta Visual FoxPro bloquear un archivo o un registro después de que fracase un intento de bloqueo. |