>para abrir la conexión uso la siguiente línea (previas
>declaraciones)
>miDB.Open "Provider=SQLOLEDB; Initial Catalog=GtosFun; Data
>Source=CPQDBSVR\DBDESA; integrated security=SSPI; persist security >info=True;"
>
>Y después, el código que utilizo para abrir el recordset y lo demás , es el
>siguiente:
>
>Private Sub Cargando()
>On Error GoTo ManejoErr
>Dim xSt as String
> 'Vamos cargando los datos en el formulario
> rsCli.CursorLocation = adUseServer
> xSt = “SELECT TOP 20 NomCte, Domicilio, Colonia, Tel, CP, Ocup FROM
>Clientes WHERE StatLlam Is Null AND Ocup Is Null AND CitaAs Is Null”
>
> rsCli.Open xSt, miDB, adOpenKeyset, adLockPessimistic, adCmdText
> rsCli.MoveFirst
>
> If rsCli.EOF Or rsCli.BOF Then
> 'Si no se encuentra un registro, nos movemos al fin del archivo
> MsgBox "No existen más registros disponibles..", 16, "No hay
>registros..."
> rsCli.Close
> Set rsCli = Nothing
> Exit Sub
> Else
> 'Si se encuentra un registro
> GoTo CargaDatos
> End If
>
>CargaDatos:
> On Error GoTo ManejoErr
> 'Editamos un campo para marcarlo como bloqueado
> rsCli.Fields("Ocup") = "Oc"
> 'Desactivamos la rutina de errores
> On Error GoTo 0
> 'Llamamos la procedimiento que carga los controles
> CargarControles
>
>‘Rutina de manejo de errores
>ManejoErr:
> NoError = Err.Number
> Select Case NoError
> Case 0
> Debug.Print "No hubo error"
> ‘Capturamos el error en caso de registro bloqueado
> Case -2147467259
> ‘Si está bloqueado, brincamos al siguiente
> rsCli.Move 1
> GoTo CargaDatos
> Case Else
> MsgBox "Error No: " & Err.Number & vbCr & "Descripción: " &
>Err.Description
> End Select
>End Sub
>Saludos a todos y gracias de antemano por toda la ayuda...
>Anteriormente tenía una aplicacióin desarrollada en VB 6 y Access como base
>datos, en la cual varios usuarios solicitaban un registro a la base y tenía
>que bloquear el registro y mostrar uno diferente a cada usuario. Esto me
>funcionaba bien al capturar el error al querer editar un registro que ya
>estaba bloqueado, pues brincaba al siguiente y así...
>Para mostrar esos registros, hacía un "SELECT TOP 20 NomCte... etc" y hacía
>un Recordset.MoveFirst para colocarme en el primero.
>Ahora he migrado la base de datos a SQL Server, cambiando las cadenas de
>conexión y todo pero al pedir un registro, solo me da al primer usuario.. los
>demás usuarios ya no les muestra registros. al hacer una revisión paso a
>paso, la ejecución del código se queda en el Recordset.MoveFirst y ya no sale
>de ahí...
>Los bloqueos de registro me funcionan igual que en Access (el registro
>editado no puede editarse por nadie más).
>Ojalá alguien pueda ayudarme para ver porque solo me muestra el primer
>registro y al siguiente usuario ya se queda bloqueado.....
>Gracias por su ayuda...
--
Saludos,
Alex
[MS-MVP Visual Basic]
"Francisco Rivera" <Francis...@discussions.microsoft.com> escribió en
el mensaje news:F3177FAF-9FA3-42EF...@microsoft.com...
Porque no creas una tabla, en la que almacenes los registros que se
encuentran bloqueados. Es decir, cuando asignes un registro a un
usuario, simplemente lo anexas a esa tabla (su id) y al salir lo borras
de esa tabla. Sobra decir que cuando asignes un nuevo registro, buscas
primero que el seleccionado no este en esa tabla.
Espero te sirva.
Un saludo
--
Un saludo, Víctor Koch.
"the_ma3x" <mgri...@gmail.com> escribió en el mensaje
news:1135181250.5...@g49g2000cwa.googlegroups.com...
A lo que se refiere Alex es a que no conviene dejar bloqueados los registros
durante su edición.
Hay dos tipos de bloqueos "pesimista" y "optimista", el más restrictivo y
que penaliza más en un entorno grande es el primero, y es el que propones.
Mejor bloquear el registro sólo durante el breve instante de su
actualización y siempre dentro del contexto de una transacción.
Saludos,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho
--
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm=10
FIMARGE, S.A.
Principat d'Andorra
lfranco@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile=02aa1615-1a2f-4202-bc3f-aec297d967d2
y aún menos durante su consulta, que es lo que me parece que intenta hacer
Francisco...
"Francisco Rivera" escribió: