Ayuda sobre Bloqueo de Registro,Registros o tabla

Buenas Noches experto quisiera que me ayudes con las dudas que tengo sobre cuando un programa trabaja en entorno multiusuario. Mis dudas son las siguientes:

1.- ¿se debe bloquear la tabla al crear un nuevo registro?

2.- ¿Por ejemplo al actualizar el stock en la tabla artículos se debe bloquear ese registro para que otro usuario no lo actualice al mismo tiempo?

en este ejemplo pequeño que actualizo un registro de clientes podrías poner la sentencia para bloquear el registro al momento de grabar.

*********************

Select Clientes

set order to codcli
seek(alltrim(ThisForm.txtcodcli.Value))
If Found()
Repla razcli With ThisForm.txtrazcli.Value
Repla dircli1 With ThisForm.txtdircli1.Value
Repla dircli2 With ThisForm.txtdircli2.Value
Repla dircli3 With ThisForm.txtdircli3.Value
Repla dircli4 With ThisForm.txtdircli4.Value
Repla dircli5 With ThisForm.txtdircli5.Value
Repla dircli6 With ThisForm.txtdircli6.Value
Repla dircli7 With ThisForm.txtdircli7.Value
Repla dircli8 With ThisForm.txtdircli8.Value
Repla ruccli With ThisForm.txtruccli.Value
thisform.setall("Enabled",.f.,"Textbox")
thisform.setall("Enabled",.f.,"combobox")
Endif

1 respuesta

Respuesta
1

Jerry2010 como estas, si es muy importante poder bloquear las tablas en un entorno multiusuario, imaginate la situación en que dos personas crean un cliente nuevo, esto genera un código de identificación único para cada cliente y podría crearse el mismo para los dos, este ejemplo es muy difícil que suceda pero para tomar estos recaudos esta la función

Tenes que pensar en cuando bloquear tablas y cuando solo registros, si vas a actualizar solo un registro, como el stock o editar el detalle del producto con bloquear el registro alcanza.

Pero bueno volviendo al tema. Para bloquear el registro usas la sentencia lock(), esto bloquea el regsitro en el cual esta el cursor o podes indicar el registro a bloquear (pueden ser varios) unlock es para desbloquear.

En tu caso particular yo podria el bloque antes del primer replace y lo saco despues del ultimo, siempre hay que tratar de que la tabla o registro este el menor tiempo bloqueado.

A tener en cuenta: si el registro o tabla esta bloqueado y otra secion o usuario intenta acceder se puede clavar el programa o generar un error por lo que tendiras que poner una sentencia repetitiva hasta que se desbloque la tabla y recien continue el programa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas