Bloqueo pesimista con ADO, ACCESS y SQL

Estoy desarrollando un mantenimiento de tablas y tengo un problema con el bloqueo de registros.
Este mantenimiento es para acceder desde varios puestos de trabajo y necesito bloquear un registro cuando este siendo modificado por algún usuario pero la instrucción "pessimistic" no lo bloquea. Con los CONTROL DATA va de maravilla pero no los debo utilizar. He de utiliar ADO y los objetos RECORDSET con apertura vía SQL. La apertura de la tabla la hago como sigue:
*****************************
Set CNN = New ADODB.Connection
Set rstArticulos = New ADODB.Recordset
CNN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sPathBase & ";"
CNN.Open
RstArticulos. Open "SELECT * FROM Articulos ORDER BY Referencia", CNN, adOpenDynamic, adLockPessimistic
***********************
He probado incluso con la instrucción "rstArticulos.LockType = adLockPessimistic" antes de abrir la tabla pero nada de nada, no bloquea el registro y permite editarlo aunque supuestamente esté "pillado" por otro usuario (otro PC).
Con los CONTROL DATA, al ejecutar el método EDIT lo bloquea bien, perfecto, pero los objetos RECORDSET de ADO para ACCESS 2000 no llevan el método EDIT. No se si será por esto o por utilizar instrucciones SQL (necesito usarlas) o si puedo solucionarlo de otra forma pero aquí os expongo mi problema a ver si me echáis una mano.

1 Respuesta

Respuesta
http://www.mvps.org/vexpert/articles/vbLocks.htm
Esta página esta todo lo que puedo saber sobre recordset multiusuario.
No me alcanzaría esto para explicarte. Prefiero que lo leas todo completo y que tomes una decisión.
Muchas gracias
Leandro
Si no te anda este acceso mandame un mail a
[email protected]
Que te lo paso.
RstArticulos. Open "SELECT * FROM Articulos ORDER BY Referencia", CNN, adOpenreadonly, adLockPessimistic
Hola ¿lo qué quieres hacer es bloquear al usuario, o que este no pueda modificar nada de la base?
Que no pueda modificar nada con el adopenreadonly solo va a poder leer
Un usuario debe bloquear al resto cuando este está haciendo una modificación en un registro. P.E.: Si yo estoy haciendo una modificación en el registro 5 y otro usuario entra en ese registro e intenta modificarlo, la modificación válida será la del último que le dé a aceptar y esto no tiene sentido. Por eso si yo voy a modificar, el resto no deberían tener acceso a ese registro hasta que yo haya terminado (UPDATE) con esa modificación. Si abro la tabla como me dices de "readonly" nadie podrá modificar nada y esa no es mi intención.
Esta página ya la conocía. Yo utilizo el bloqueo pesimista y como puedes observar utiliza el evento EDIT por lo que deduzco que ese código es válido para DATACONTROL y no es especifico de RECORDSET que es lo que yo necesito (Los Recordset no tienen el evento EDIT)
Perdona pero no puedo ayudarte como lo mereces.
Es por falta de tiempo y porque el tema es para tomarse un tiempo y verlo de cerca.
Mil disculpas no quiero hacerte perder el tiempo
leandro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas