Permitir acceso a un programa Access solo un número determinado de veces

acceder-Access-número-veces

Escrito por Administrador

13 de octubre de 2022

En su día, vimos la manera de bloquear un programa de Access a partir de una fecha determinada usando VBA. Sin embargo, puede ser que lo que realmente pretendamos es que el usuario solo pueda acceder al programa Access un número determinado de veces. Si es tu caso, sigue leyendo porque voy a explicarte cómo hacerlo de una forma sencilla.

Para el ejemplo, he creado un formulario de menú que se cargará un máximo de 3 veces. La cuarta vez que lancemos el programa, éste nos mostrará un msgbox indicándonos que hemos superado el límite de accesos.

En primer lugar, vamos a crear una tabla a la que llamaremos "Control", con los campos "Usuario", "Numero accesos" y "Limite Accesos".

bloquear-access-fecha
bloquear-access-fecha

A continuación, vamos a introducir los siguientes valores en el primer registro de la tabla "Control".

bloquear-access-fecha

En este ejemplo, el campo "Usuario" va a ser único, pero podría darse el caso de que quisiésemos que cada usuario tuviese un número determinado de accesos. Si te parece interesante el caso multiusuario, ponlo en los comentarios y hago un post sobre ello.

En el campo "Limite accesos" establecemos el máximo de accesos para dicho usuario. En este caso 3 accesos.

Por último, en el campo "Numero accesos" por defecto aparece un 0. Este campo lo vamos a usar como contador, sumando una unidad cada vez que el usuario acceda al programa.

En segundo lugar, vamos a abrir el editor de Visual Basic y a escribir el siguiente código en el formulario "frmMenu",

Private Sub Form_Load()

'Comprobamos el número de veces que se ha abierto el programa

contador = DLookup("[Numero accesos]", "[Control]", "[Usuario]='predeterminado'")
limite = DLookup("[Limite accesos]", "[Control]", "[Usuario]='predeterminado'")

'Si es inferior al límite prefijado, sumamos una unidad al campo Numero de accesos

If contador <= limite Then

contador = contador + 1

Dim dbs As DAO.DataBase

Set dbs = CurrentDb()
dbs.Execute "UPDATE Control Set [Numero accesos]=" & contador & " Where Usuario='predeterminado'"

'Si hemos superado el límite de accesos, cerramos el programa

Else

MsgBox "Se ha superado el número de accesos permitido"
DoCmd.Close acForm, "frmMenu"

End If

End Sub

Veamos el código detenidamente.

Lo primero que hacemos es usar la función DLookUp para buscar el número actual de accesos y su límite preestablecido. El campo clave será el nombre del usuario. En nuestro caso "predeterminado".

Private Sub Form_Load()

'Comprobamos el número de veces que se ha abierto el programa

contador = DLookup("[Numero accesos]", "[Control]", "[Usuario]='predeterminado'")
limite = DLookup("[Limite accesos]", "[Control]", "[Usuario]='predeterminado'")

Seguidamente, comprobamos si hemos superado el límite de accesos. En caso negativo, aumentamos una unidad el contador y actualizamos la tabla "Control" mediante una sentencia Update en SQL.

'Si es inferior al límite prefijado, sumamos una unidad al campo Numero de accesos

If contador <= limite Then

contador = contador + 1

Dim dbs As DAO.DataBase

Set dbs = CurrentDb()
dbs.Execute "UPDATE Control Set [Numero accesos]=" & contador & " Where Usuario='predeterminado'"

Finalmente, si hemos superado el límite de accesos, mostraremos un mensaje y cerraremos el programa impidiendo el acceso al mismo.

'Si hemos superado el límite de accesos, cerramos el programa

Else

MsgBox "Se ha superado el número de accesos permitido"
DoCmd.Close acForm, "frmMenu"

End If

End Sub

bloquear-access-fecha

Por último, recalcar la importancia de proteger el código estableciendo una contraseña. De lo contrario, cualquiera podría acceder a vuestra base de datos en modo administrador y deshabilitarlo.

Espero que te haya servido este nuevo método para permitir acceder a un programa o base de datos Access un número limitado de veces. Así que, ya puedes enviársela al cliente sin ninguna preocupación.

Hasta la próxima.

Descarga el archivo del ejemplo

Por favor, ayúdame y haz clic en el anuncio. Solo te lleva un segundo 😉

 


0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto