Hoy voy a enseñaros una manera muy sencilla de bloquear un programa hecho en Access a partir de una fecha determinada usando VBA.
Muchas veces, necesitamos enviarle al cliente el programa para que nos valide lo que vamos haciendo, o simplemente para que vea una muestra de cómo va quedando. Pero, no queremos realizar la entrega definitiva, y menos si aún no nos ha pagado.
Por eso, es necesario bloquear el programa Access pasada una fecha, una vez que el cliente haya tenido tiempo de testearlo.
La solución es introducir un pequeño código en la carga del formulario principal del programa. Así, lo primero que haremos al cargar el formulario, será comprobar si hemos superado dicha fecha, y en caso afirmativo, cerrar el programa automáticamente.
El código a implementar en el evento “Al cargar” del formulario principal, sería el siguiente
Private Sub Form_Load()
'Fecha de caducidad
If Date < #5/15/2050# Then
Else
msgbox "Fecha de prueba expirada. Contacte con el administrador."
DoCmd.Quit
End If
End Sub
En este caso, si la fecha es superior al 15 de mayo de 2050, se mostrará un mensaje advirtiendo de la caducidad del programa, y se cerrará. Si quieres modificar la fecha, solo tienes que sobrescribir la que está marcada en rojo. Date cuenta que está en formato americano. También, te dejo un enlace donde hablo sobre la función msgbox en macros.
A continuación, voy a explicarte paso a paso cómo introducir este código en el evento que hemos comentado anteriormente, por si no supieses como hacerlo.
Lo primero que debes hacer es irte a la vista Diseño del formulario principal (el que se abre al ejecutar el programa). A la derecha tienes la barra de propiedades. Debes seleccionar la pestaña "Eventos" y pulsar sobre los tres puntitos del evento "Al cargar".
Ahora, selecciona la opción "Generador de código".
Por último, introduce el código. Debería quedarte así,
Si ejecutamos el programa, y la fecha que hemos configurado es anterior a la del día en curso, nos apareceá un mensaje como este y el programa se cerrará.
Otro detalle importante es que el código VBA debe estar protegido por contraseña. De lo contrario, cualquiera que acceda a él, podrá cambiar la fecha de caducidad.
Para bloquearlo, no hay más que pulsar ALT+F11 para abrir el editor VBA.
Después, nos ponemos encima del proyecto y pulsamos el botón derecho del ratón para abrir el menú contextual. Seleccionamos la opción “Propiedades de…”
Se abrirá una pantalla como la siguiente. Elegimos la pestaña “Protección” y marcamos el tick de “Bloquear proyecto para visualización”.
A continuación, introducimos la contraseña que queramos.
La próxima vez que abramos el programa e intentemos acceder al código del proyecto, nos pedirá la contraseña introducida.
De esta manera, has aprendido a bloquear un programa o base de datos Access a partir de una fecha determinada. Así que, ya puedes enviársela al cliente sin ninguna preocupación.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Hasta la próxima.
Si te ha servido y quieres donar
6 Comentarios
Enviar un comentario
Últimas publicaciones
Tienes razón, no había caído. Estaba pensando más en la seguridad y el pícaro, que en la operatividad, je je. Espero con impaciencia el post. Gracias.
Hola Pedro,
Ya tienes el artículo prometido.
https://www.vbatotal.com/permitir-acceso-a-un-programa-access-solo-un-numero-determinado-de-veces/
Saludos.
Pero seguirías teniendo el mismo problema si al usuario le da por ir cambiando la fecha del sistema.
Próximamente colgaré un post para que veas cómo se realizaría con un contador.
Saludos.
Gracias por el apunte, admin. Si me pudiera enviar al correo un pequeño ejemplo de cómo hacerlo, se lo agradecería.En cualquier caso, tengo la idea de crear una propiedad personalizada que guarde en VBA la fecha de la primera apertura de la BD. Creo que de esta forma, al estar el código protegido, sería algo menos vulnerable que la creación de referencias en tablas. Muchas gracias, y saludos.
Buenas. Pero si tienes acceso a cambiar la fecha del ordenador, ya puedes acceder. ¿Cómo se podría evitar esa circunstancia?. Gracias.
Hola Pedro,
En principio el usuario no sabe el motivo por el que el programa ha dejado de ejecutarse. Es raro que se pusiese a cambiar la fecha en el PC.
La única forma de bloquear el acceso al programa sin usar fechas, sería usando un contador. Por ejemplo, podrías guardar en una tabla el número de veces que quieres que se ejecute el programa e ir actualizando su valor cada vez que se abra (restando una unidad).
Saludos.