Visual Basic - QUE ACASO NADIE SABE ....????

Life is soft - evento anual de software empresarial
 
Vista:

QUE ACASO NADIE SABE ....????

Publicado por arturo (15 intervenciones) el 09/09/2006 22:16:00
Necesito saber como bloquear un registro de determinada tabla de Access, por medio de ADODB.

Por ejemplo

Set Prueba = New ADODB.Connection
Prueba.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Persist Security Info=False"
Prueba.Open

Set RPrueba = New ADODB.Recordset
RPrueba.ActiveConnection = Prueba
RPrueba.CursorLocation = adUseClient ' ---> QUE VALOR PONER
RPrueba.CursorType = adOpenKeyset ' ---> QUE VALOR PONER
RPrueba.LockType = adLockPessimistic ' ---> QUE VALOR PONER
RPrueba.Source = "SELECT * FROM productos WHERE clave = " & CveEdit
RPrueba.Open

Asi abro yo la tabla PRODUCTOS cuando quiero editar un producto cuya clave sea igual al valor de CVEEDIT (una clave un producto, nunca abrá más de 2 productos con la misma clave).

Mi duda es....

COMO ABRIR EL RECORDSET DE MANERA QUE ME INDIQUE SI ALGÚN OTRO USUARIO MANTIENE ABIERTO ESE REGISTRO....???

Si alguien ya ha hecho esto anteriormente, mucho le agradeceré me lo pase, porque no he encontrado ejemplos concisos sobre los bloqueos optimistas y pesimistas, he usado lo que ahí me dicen pero no logro evitar que el registro sea abierto mientras alguien lo esté usando.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:QUE ACASO NADIE SABE ....????

Publicado por Esteban (1144 intervenciones) el 10/09/2006 21:26:33
Para eso hay que usar la astucia.

Crea un campo bandera que indique si está o no tomado el registro.

Compañero, fuera de eso NO EXISTE FORMA DE BLOQUEAR un registro si un usuario lo está solo consultando, si alguien lo edita, ese momento será apenas un instante en el sistema, ya que cuando se ejecuta un update éste durará unas centésimas de segundo.

Pero piensa bien cómo vas a tener eso, porque si un usuario por X o Y razón no deja el registro como "Check Out" nadie podrá editarlo si lo haces así, hasta que el usuario lo suelte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:QUE ACASO NADIE SABE ....????

Publicado por arturo (15 intervenciones) el 11/09/2006 16:55:44
Muchas gracias por el comentario Esteban, hasta que al fin alguien contesta lo que buscaba, sin menospreciar las repuestas anteriores que intentaron darme una solución, que igual se agradecen.

Ya me habían comentado la idea del campo bandera, de hecho ya lo uso, a cada registro le agregé un campo booleano donde al momento de iniciar una edición pregunto por ese campo, si es FALSE lo pongo en TRUE (y grabo el cambio) y presento los datos para que lo editen, se devolverá a FALSE hasta que el usuario grabe la edición o la cancele.

El problema se me presenta si se va la luz o si se pierde la conexión de la red, ese campo queda marcado como si lo estuvieran editando, buscaba yo la manera de hacer eso de manera automática, así como cuando abres un MDB se crea una extensión LDB o algo parecido.

Ya pensaré una manera de evitar el problema que tengo, muchas gracias por la respuesta, me ha sido de gran utilidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:QUE ACASO NADIE SABE ....????

Publicado por Esteban (1144 intervenciones) el 11/09/2006 17:22:36
Puedes también poner al lado del campo booleano el usuario que bloqueó el registro, para que éste mismo pueda desbloquearlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar