Visual Foxpro 10 : Funcion psqlbloquear

Fecha Publicación:       02 de Enero de 2024
Fecha Modificación:       03 de Enero de 2024

Instaladores

Los instaladores se encuentran en la web  del autor: Link de descargas. https://levelvfp.com.ar/ 

→  Descarga Gratuita FULL de screenclase, sqldata, sqldata2 y therm.
→  VFP 9 IDE ECOSYSTEM (reemplaza el CD original de VFP 9 IDE y lo potencia)
→  VFPA 10 32 Y 64 BITS
→  RUNTIMES PARA LOS CLIENTES

Link de descargas:

https://levelvfp-my.sharepoint.com/:f:/g/personal/gfvaldez_levelvfp_onmicrosoft_com/EpLRTWENSDFGq8qfHulkW4IBHHLozhzPSF7rNgHyIiArLw?e=K4bly1

Ruta Instalacion por defecto de los manuales 

Cuando instalamos en nuestra pc la clase sqldata, sqldata2 se instala por defecto en la ruta:

C:\Program Files\LEVELVFP ARGENTINA\

Dentro de la ruta esta la carpeta manuales sqldata y sqldata2 , alli se se encuentra la documentacion oficial de la funcion psqlbloquear, que se encuentra en el archivo :

bloqueos.rtf  , bloqueos y transacciones .rtf , stock y saldos.rtf , otras funciones.rtf ,  recomendaciones y tips para sqldata y sqldata2.rtf

En el curso CURSO 2 SQLDATA Y SQLDATA2 NIVEL INTERMEDIO AVANZADO-NUEVA FORMA DE PROGRAMAR  se habla de la funcion psqlbloquear, en el tiempo 1:13

Que es la funcion psqlbloquear de VFP 10

Funcion psqlbloquear

Recuerda la  Funcion psqlbloquear, solo se puede usar abriendo una transaccion (despues de la funcion psqlcomtran) , si se usa fuera de una transaccion nos generara un error

osqldata2.psqlcomienzo(_screen,"1")
osqldata2.psqlcomtran(_screen,"1")
osqldata2.psqlbloquear(_screen,"1","productos","nombre",vinproductos)

Explicacion parametros:

 

_screen  
"1"

nombre o nro de conexion

 

"productos"  Tabla a Bloquear
"nombre" Nombre de cualquier campo de la tabla  que sea editable y que no sea el campo id
vinproductos cadena que se desea bloquear
   

 

Vea tambien : Visual Foxpro 10 : Funcion psqlin y los bloqueos en las transacciones  

Formas de uso psqlbloquear

osqldata.psqlbloquear(_screen,"1","clientes","nombre","id=1")
osqldata.psqlbloquear(_screen,"1",tabla,"cualquiercampo","condicion")

para toda la tabla

osqldata.psqlbloquear(_screen,"1","clientes","nombre","1=1")

Esta funcion es universal para todos los motores. 

pero solo bloquea registros.  hay muchos tecnicas de bloqueo segun el motor de datos, pero para internet se reduce a esta sola tecnica, las demas tienen distintos problemas, 

Si necesitan bloquear una tabla completa, se pueden usar 2 tecnicas : 

→ Si la tabla tiene menos de 10.000 registros.  

se puede bloquear todos los registros con la funcion,

→ Pero si tienen mas registros, se recomienda una tabla de tablas, 

donde cada registro contiene el nombre de la tabla, y con la funcion, bloquear el registro correspondiente a la tabla.

si tienen una tabla de tablas, seria esta la manera

nombre de la tabla 'tablas' nombre del campo 'nombre'

osqldata.psqlbloquear(_screen,"1","tablas","nombre","nombre='clientes'")

los bloqueos se producen dentro de una transaccion.

esto seria asi

osqldata.psqlcomtran(_screen,"1")
osqldata.psqlbloquear(_screen,"1","clientes","nombre","id=1")
//realizar la operacion
osqldata.psqlfintran(_screen,"1")

Cuando se especifica un bloqueo, otro usuario se queda esperando intentando bloquear en esa misma instruccion. 

El bloqueo se mantiene hasta finalizar la transaccion, y se libera automaticamente.

Nota : los bloqueos de registros se producen automaticamente al ejecutarse una instruccion UPDATE  , dentro de una transaccion.
Por eso se debe tratar de que la transaccion sea lo menos concurrente posible (o aislada), y dure lo menos posible.
Si es muy concurrente, se debe recurrir a procedimientos almacenados. Que pueden crearse dentro del motor, o enviarse como un lote con psqlcomando, y no utilizar psqlcomtran, ni psqlfintran. 
Deben utilizarse las instrucciones de comienzo de transaccion y finalizacion de transaccion de cada motor dentro del lote.

 

Articulo : 572 - Veces Leidas
Compartir Articulo: