Acceso exclusivo a la Tabla de la Base de Datos mediante código VBA

13/09/2004 - 03:33 por nadura | Informe spam
Con el siguiente Código mediante ADO puedo conseguir
bloquear un determinado registro de la base de Datos
cuando dos usuarios pretenden acceder a él de forma
simultánea:

Private Sub Command0_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strText As String
Dim strConn As String
Dim iCliente As Integer
Dim iClienteValorCambiado As String

On Error GoTo err_ADO:

iCliente = InputBox("Introduzca el Código de Cliente a
buscar:" & vbNewLine & "Debe Introducir un valor
numerico.")
If Len(iCliente) = 0 Then
Exit Sub
End If

iClienteValorCambiado = InputBox("Introduzca el Valor
nuevo:")
If Len(iClienteValorCambiado) = 0 Then
Exit Sub
End If

strConn = "Provider=SQLOLEDB.1;Integrated
Security=SSPI;Persist Security Info=False;Initial
Catalog=Base de Datos SQL Server 2000;Data
Source=WINDOWSXP"
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.Open strConn
rs.Open "Select * from [Tabla de Clientes] WHERE
[C_CLIENTE]= " & iCliente, cn, adOpenStatic,
adLockPessimistic < Bloqueo del Registro con número
de cliente coincidente con el criterio de búsqueda.

MsgBox "Registro bloqueado: " & iCliente

Do Until rs.EOF
rs.Fields("N_CLIENTE").Value =
iClienteValorCambiado
MsgBox "Valor cambiado de " & iClienteValor & "
a " & iClienteValorCambiado
rs.MoveNext
Loop

rs.Close
cn.Close

Exit Sub

err_ADO:

MsgBox "Error: " & Err.Description
Resume Next

End Sub


Cuestión a Plantear: ¿Como debería modificar dicho código
para bloquear toda la Tabla, es decir, permitir a un
usuario concreto abrir la Tabla en modo exclusivo,
impidiendo a otros usuarios acceder a ésta, mientras el
primero esté realizando consultas ó modificaciones en la
misma?

¿Existe algún conversor para pasar código en DAO a ADO?
 

Leer las respuestas

#1 Rodrigo Corral [MVP]
13/09/2004 - 10:58 | Informe spam
No lo he probado, pero añadir WITH TABLOCK a tu SELECT, deberia funcionar.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org

Preguntas similares