Seguridad mediante activación
y desactivación de controles
Access proporciona un control de
seguridad para grupos de usuarios que permite
limitar la funcionalidad de cada usuario individual.
Cuando un usuario intenta realizar alguna acción
no autorizada Access visualiza un mensaje de aviso.
Otra manera más elegante de gestionar la seguridad
puede ser simplemente no activar los controles
a los que un usuario no tiene acceso. Además,
la asignación de permisos de Access se realiza
por tabla, formulario, consulta, mientras que
la rutina que le proponemos establece los permisos
para controles individuales.
Para poder generar este tipo de
control de seguridad sobre una base de datos debemos
seguir los siguientes pasos:
1º. Crear una tabla en la que figuren
los usuarios y los grupos de usuarios como, por
ejemplo, los campos usuarios y grupo.
2º. Generar un formulario sobre
dicha tabla llamado, por ejemplo, usuarios.
3º. Crear una macro autoexe que
habra el formulario en modo oculto con la condición
[usuario]=CurrentUser() para que el registro actual
del formulario sea el del usuario activo.
Supongamos que tenemos un formulario
llamado form1 con botones de imprimir, insertar
y editar registros llamados, respectivamente,
boton1, boton2 y boton3 y queremos que un grupo
de usuarios llamado grupo1 sólo tenga acceso al
botón de imprimir. Para desactivar los botones
de insertar y editar debemos usar la propiedad
OnOpen del formulario y añadiendo el siguiente
código:
if condition: [Forms].[usuarios].[grupo]="grupo1"
setvalue: [Forms].[form1].[boton1].[Enabled] Yes
[Forms].[form1].[boton2].[Enabled] No [Forms].[form1].[boton3].[Enabled]
No
Incrementar y decrementar fechas
pulsando + y -
Una característica interesante
para añadir a los programas Access es permitir
que el usuario pueda incrementar y decrementar
fechas pulsando las teclas + y - . Para proporcionar
esta característica se debe añadir el siguiente
código al evento KeyDown de los campos de tipo
fecha que existan en el formulario:
Select Case KeyCode Case 107, 187
Screen.ActiveControl =
Screen.ActiveControl + 1
SendKeys "{Esc}"
Case 109, 189
Screen.ActiveControl =
Screen.ActiveControl - 1
SendKeys "{Esc}"
End Select
Mensajes personalizados en la
barra de estado
El siguiente código permite visualizar
mensajes de su elección en la barra de estado
de Access cuando el ratón se mueve sobre un objeto
de un formulario (texto, botones, etc.). Las dos
subrutinas deben estar en un módulo de manera
que sean accesibles globalmente:
Global StatusCalled Global CurrentStatusMsg
Sub StatusBarMsg (StatusMsg)
If StatusMsg <> CurrentStatusMsg
Then
Dim ss As Variant
ss = SysCmd(SYSCMD_SETSTATUS,StatusMsg)
StatusCalled = True CurrentStatusMsg
= StatusMsg
End If
End Sub Sub ClearStatusBarMsg ()
If StatusCalled Then
Dim ss As Variant ss = SysCmd(SYSCMD_CLEARSTATUS)
StatusCalled = False CurrentStatusMsg = "
"
End If
End Sub
El siguiente código se debe añadir
al evento mouse move del control sobre el que
deseemos visualizar un mensaje en la barra de
estado:
Sub CmdButton_MouseMove (Button
As Integer, Shift As integer, x As Single, Y As
Single)
StatusBarMsg "Su mensaje personalizado"
End Sub
El siguiente código se debe añadir
al fondo del formulario para que se borre el mensaje
cuando el ratón se mueva fuera del objeto:
Sub Detail0_MouseMove (Button As
Integer, Shift As Integer, X As Single, Y As Single)
ClearStatusBarMsg
End Sub |