Navegacion: Inicio > Inicio Zona Access > Trucos de Access > esta pagina
Documentar sus programas en Access
Access proporciona un entorno visual de desarrollo con el que se pueden generar potentes aplicaciones. El problema surge cuando el desarrollo realizado adquiere un volumen considerable. ¿Cómo controlar y gestionar la cantidad de formularios, informes, macros, etc que se han ido generando? Una opción muy interesante y poco conocida de Access es el documentador. En el menú Herramientas, opción Analizar, se pueden acceder al documentador que permite obtener información
completa y organizada de los objetos que constituyen la basa de datos, de manera que se genera un inventario de todos y cada uno de los componentes y sus propiedades.
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