SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Bases de Datos => Mensaje iniciado por: bartiv72an en Martes 25 de Octubre de 2005, 02:49
-
Necesito saber cómo abrir una tabla de Access en Modo Exclusivo, o sea, que un usuario la abra y que mientras la tenga abierta, ningún otro usuario pueda acceder a ella.
Por ejemplo, estoy capturando pagos, los cuales tienen esta estructura..:
Clave Otros Datos....
00001 .......
00002 ......
Cuando agrego un pago, la clave es generada automáticamente, a como se vayan agregando se va generando, mi forma de generar esa clave es así.... antes de grabar el nuevo registro, abro la tabla con un "SELECT MAX(clave) AS maximo FROM Tabla....." le sumo uno y ya tengo la clave, mi pregunta es....
Quiero que al momento de grabar el pago, se abra la tabla "TABLA" en modo exclusivo, o sea, bloquearla al resto de los usuarios para que no puedan abrirla mientras busco el MAXIMO y le agrego el nuevo registro....
¿CÓMO HAGO ESO..........?
La operación de agregar lo hago asi...:
Set Rs = New ADODB.RecordSet
Rs.Open "select max(Clave) as mayor from Pagos", Rc, adOpenKeyset, adLockOptimistic
If Not IsNull(Rs("mayor")) Then
Nva_Cve = Val(Rs("mayor")) + 1
Else
Nva_Cve = 1
End If
Rs.Close
Rs.Open "select * from Pagos", Rc, adOpenKeyset, adLockOptimistic
Rs.AddNew
Rs("clave") = Nva_Cve
Rs......
Rs.Update
Rs.Close
Lo que pretendo es que la tabla PAGOS quede bloqueada al resto de los usuarios mientras hago la operación de sacar el Máximo y grabar el registro..
Uso Access 2000, y ADODB para manejar los archivos
-
Es forzoso que utilices access, pues otros manejadores de base de datos tienen ya integrado el control para lo que deseas hacer, creo que es en el tema de trasacciones. espero te ayude.
-
También puedes probar iniciar una transacción.
-
Asi es, lo que tu tratas de solucionar es un problema de concurrencia, en SQL se podria solucionar con transacciones.
Realmente no he trabajado con access, pero asumo que se debe poder crear transacciones.
Investiga hacerca de
begin tran
commit
rollback
que de van a servir de mucho.
Atte
Ing_Marco
-
El contro ADO tiene una propiedad locktype si mal no recuerdo pruebala y avisas ojala haya sido de ayuda. Saludos.