SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: ccortes en Martes 8 de Julio de 2003, 23:22

Título: Re: Bloqueo de base de datos en red
Publicado por: ccortes en Martes 8 de Julio de 2003, 23:22
Me pueden decir que debo de hacer para bloquear ya sea un registro especifico o toda una tabla de una base de datos que trabaje en red, es decir que cuando un usuario este trabajando sobre un registro especifico este no pueda ser accesado por otro usuario, ya sea el registro o toda la tabla.

La coneccion se establece con DAO, pero podria cambiarla a ADO

Gracias de antemano por su valiosa ayuda :think:
Título: Re: Bloqueo de base de datos en red
Publicado por: Brroz en Miércoles 9 de Julio de 2003, 08:54
El parámetros 'Bloqueos' del método 'OpenRecordset' te permite abrir el recordset con el bloqueo que desees.

Set ObjetoRs = ObjetoDb.OpenRecordset (Origen, Tipo, Opciones, Bloqueos)

Valores para 'Bloqueos':

dbReadOnly: Previene que los usuarios hagan cambios al Recordset (predeterminado en espacios de trabajo ODBCDirect).

dbPessimistic: Utiliza el bloqueo pesimista para determinar cómo se pueden hacer cambios al objeto Recordset en un entorno multiusuario. La página que contiene el registro que está modificando está bloqueada mientras utiliza el método Edit (predeterminado en espacios de trabajo Microsoft Jet).

dbOptimistic: Utiliza el bloqueo optimista para determinar cómo se pueden hacer cambios al objeto Recordset en un entorno multiusuario. La página que contiene el registro que está modificando está bloqueada mientras se ejecuta el método Update.

dbOptimisticValue: Utiliza la concurrencia optimista basándose en valores de fila (sólo espacios de trabajo ODBCDirect).

dbOptimisticBatch: Activa la actualización optimista por lotes (sólo espacios de trabajo ODBCDirect).

Espero que esta info te sea de ayuda.
Título: Bloqueo de base de datos en red
Publicado por: Mellileo en Miércoles 9 de Julio de 2003, 16:46
Hola CCortes:

Mira, se puede hacer de las dos maneras siguientes:

Si trabajas con DAO, en el recordset existe una propiedad llamada Lockedit que posee dos valores boolean, así:

Objdata.Recordset.LockEdits = True

Bloquea el registro para que otro usuario de la red no lo modifique o realice cualquier tipo de edisión en él.

Objdata.Recordset.LockEdits = False

Realiza lo contrario a lo anterior, lo libera del bloqueo.

Ahora, la manera más fácil es trabajar con ADO, ya que cuando cargas el recordset por defecto trabaja con diferentes aspectos para bloquear registros, estos son:



Y no te tienes que complicar mucho con código.

Si quieres averigua un poco más sobre
"bloqueos" en las ayudas del lenguaje de programación de preferencia.

Espero haber sido de ayuda.

Suerte!!