Visual Foxpro 10 : Funcion psqlbloquear
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.
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.