Necesito saber si en visual basic 6.0 el bloquo de registro es automático uso el manejador de visual por default y si se requiere bloquoe si me puedes ayudar con un ejemplo de como hacerlo, de antemano que agradezco la ayuda que me puedas proporcionar
1 Respuesta
Respuesta de juancito39
1
1
juancito39, Ingeniero Electricista desde 1981 , trabajo en servicio y...
Supongo que debes de venir de dbase, fox, clipper, etc, donde teníamos que bloquear los registros, y las bases de datos para hacer las operaciones de modificación y/o inclusión de registros, pues bien, te tengo buenas noticias, no es necesario hacer esto en VB, el motor interno de bases de datos se encarga de toda esta operación, solo puedes bloquear la base de datos y/o una tabla especifica si vas a implementar acciones donde necesites tener control exclusivo de ellas . Acá te envío un ejemplo de la subrutina final que hace las modificaciones en un formulario de mi programa de control de reparaciones. Las modificaciones ocurren entre la instrucción edit y la instrucción update. Saludos, Juan Hernández Private Sub IncluyeRegistro() On Error GoTo Err_incluye Rstaparatos.Fields.Refresh Rstaparatos.Edit Rstaparatos!ubicacion = TUbicacion.Text Rstaparatos!aparato = Taparato.Text Rstaparatos!garantia = TGarantia.Text Rstaparatos!Marca = Tmarca.Text Rstaparatos!Modelo = Tmodelo.Text Rstaparatos!serial = Tserial.Text Rstaparatos!nupoliza = "" & TNupoliza.Text Rstaparatos!Dist = "" & Tdistribuidor.Text If TFechacompra.Text <> " / / " Then Rstaparatos!Fecha_comp = CDate(TFechacompra.Text) End If If Tnotpre <> " / / " Then Rstaparatos!Fecha_Npre = CDate(Tnotpre) End If If Tnotrep <> " / / " Then Rstaparatos!Fecha_Nrep = CDate(Tnotrep) End If If Option1.Value = False Then Rstaparatos!aceptapre = True Else Rstaparatos!aceptapre = False End If Rstaparatos!fact_comp = "" & Tfacturacompra.Text Rstaparatos!nuorden = "" & TNuorden.Text Rstaparatos!sintoma = TSintoma.Text Rstaparatos!Accesorios = "" & TAccesorios.Text Rstaparatos!Observaciones = "" & TDetalles.Text Rstaparatos.Update Rstaparatos.Fields.Refresh Bgrabar.Visible = False Bcancelar.Visible = False Inicializa PintaTexto ActivaBotones Exit Sub Err_incluye: respuesta = MsgBox("OCURRIO UN ERROR , NOTIFIQUE AL PROGRAMADOR ESTOS DATOS" & Chr(13) & "ANOTE LO QUE ESTA ARRIBA DE ESTA VENTANA", vbOKOnly, Err.Number & " " & Err.Description) TUbicacion.SetFocus End Sub
Mi duda es porque requiero llevar el Folio de algunos recibos y no quiero que el folio se altere si dos usuario mandan al mismo tiempo grabar, no se quizá alguna maq. se más rápida que otra requiero bloquer en este caso y cual de ser así que instrucción usar si tienes algún ejemplo de ello te agradezco mucho tu ayuda. Buen día
Dejame explicarte algo, si no estas constantemente refrescando o actualizando la pantalla igual te puede suceder que dos usuarios accedan al registro y uno de ellos lo modifique, mientras el otro seguirá viendo la misma información que vio al principio, de esta manera la información valida es la que modifica el ultimo usuario, no existe la posibilidad de que dos usuarios modifiquen al mismo tiempo y ocurra un error, de esto se encarga el VB, pero si quieres seguridad de que mientras alguien este modificando más nadie pueda hacerlo debes colocar la propiedad lockedits del recordset a modo pesimista, en el ejemplo de arriba seria: rstaparatos.lockedits = true rstaparatos.edit ' aca las modificaciones rstaparatos.update Cuando haces esto se bloquea la página de 2K que contiene este registro, por eso tienes que tener cuidado de colocar rutina de tratamiento de errores, pues si otro usuario trata de bloquear el registro al mismo tiempo de esta manera va a ocurrir un error. Te recomiendo que obtengas los valores que vas a modificar de variables temporales que pidas en pantalla, y que preguntes al usuario si todas las modificaciones están correctas, luego cuando el usuario pulse aceptar comienzas la instrucción edit, esto es para que no bloquees el registro desde que el usuario solicite la modificación, porque puede pasar mucho tiempo desde que ocurre esto hasta que el usuario termina de modificar, y durante todo este tiempo el registro estará bloqueado. Cualquier duda, sigue preguntando.