Seguridad en access

Aun más importante que eso es lo siguiente, tengo una base ya desarrollada que esta en un servidor, usado por 10 personas en modo escritura y 10 en modo consulta, a la cual ingresan diariamente para ingresar datos, lo que necesito y aun no he podido hacer son dos cosas
1. Y quizá más importante, a la base le he bloqueado los menos, y he puedo un formulario de inicio, bloqueando el acceso al diseño, pero si alguien al abrir como tu creo que ya sabes presiona shift al momento de estarla abriendo, se quitan las opciones de inicio, dando el acceso total, como puedo hacer para colocarle una contraseña a esto, o para hacerlo un poco más segura...
   2. Hay cambios que quizá los usuarios deban hacer, como incorporo un bloc de cambios, es decir un formulario para hacer cambios, que me valla guardando los cambios que se van realizando... En una tabla especial!
                     Desde ya muchísimas gracias

1 respuesta

Respuesta
1
Para lo primero. Inserta un módulo (en la ventana de Visual) y escribe el siguiente código.
Public Function AlterarPropiedades(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
Dim dbs As Database, prp As Property
Const conPropNotFoundError = 3270
Set dbs = CurrentDb
On Error GoTo Change_Err
dbs.Properties(strPropName) = varPropValue
AlterarPropiedades = True
Change_Bye:
Exit Function
Change_Err:
If Err = conPropNotFoundError Then ' Propiedad no ha sido localizada.
    Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
    dbs.Properties.Append prp
    Resume Next
Else
    ' Error desconocido.
    AlterarPropiedades = False
    Resume Change_Bye
End If
End Function
Luego, según tu conveniencia y gustos (yo normalmente tengo un botón en al formulario de inicio), pero si quieres colocarlo en el evento abrir o donde prefieras, escribes este otro código.
If InputBox("Clave?", "Bloqueo de BD") = "clavequeprefieras" Then
    AlterarPropiedades "AllowBypassKey", dbBoolean, True
Else
    AlterarPropiedades "AllowBypassKey", dbBoolean, False
End If
En un botón lo que hace al presionarlo que es preguntarte por una clave, si eres tu y es correcta te activa la posibilidad de abrir la base mediante el SHIFT, pero si otro usuario lo intenta o si tu mismo quieres activarlo, escribes una clave incorrecta y vuelve a desactivarse y no se podrá abrir utilizando el shift (la base abrirá pero directo al formulario que tengas como de inicio).
Para lo segundo que planteas, no entiendo a que tipo de cambios te refieres. Si son cambios en los datos sería una especie de Log, si son cambios en el diseño creo que ya no es cuestión de Access sino del propio Windows.
Excelente mucha gracias, aun no lo he probado pero al fin veo algo de luz, para lo segundo si es una especie de log, para guardar los cambios a los registros ya almacenados...
Tengo un par de aplicaciones donde he hecho algo similar. Lo he realizado creando una función en un módulo, que simplemente es una rutina que guarda los datos que me interesan en una tabla específica para ello. Esta tabla la voy limpiando regularmente porque genera una cantidad inmensa de registros.
Public Function FORM_ACTUAL(STRFORMACTUAL As String, VUSER As Variant)
Dim BBDDAs Database
Dim TUSUARIOACTUAL As Recordset
Set BBDD= CurrentDb
Set TUSUARIOACTUAL = PIC.OpenRecordset("SELECT * FROM TUSUARIOACTUAL")
TUSUARIOACTUAL.AddNew
TUSUARIOACTUAL("FORMULARIO") = STRFORMACTUAL
TUSUARIOACTUAL!FECHA = Date
TUSUARIOACTUAL!HORAULTIMO = Format(Now(), "hh:mm:ss")
TUSUARIOACTUAL!USERNAME = NOMUSER
TUSUARIOACTUAL.Update
TUSUARIOACTUAL.Close
End Function
Esta función la llamo desde cualquier procedimiento que cuya acción me interese guardar. En este caso los argumentos son el formulario y el usuario actual de la base, pero puedes incorporar todos los argumentos que necesites, los cuales deben coincidir en tipo con los campos de la tabla LOG que diseñes.
Em mi caso lo he hecho para hacer un seguimiento de uso de la base de datos y me registra la fecha, hora, usuario y formularios que utilizan. Pero como te digo puedes incorporar los campos que necesites.
Para ejecutar la función desde un procedimiento sólo tienes que escribir
CALL FORM_ACTUAL(STRFORMACTUAL, VUSER)
Asegurándote que tienes los argumentos guardados en las variables declaradas en la función. Estas variables pueden ser Globales o no.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas