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".
A continuación, vamos a introducir los siguientes valores en el primer registro de la tabla "Control".
En este ejemplo, el campo "Usuario" va a ser único, pero podría darse el caso de que quisiésemos que cada usuario pudiese acceder al programa Access un número determinado de veces. 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",
'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".
'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.
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.
Else
MsgBox "Se ha superado el número de accesos permitido"
DoCmd.Close acForm, "frmMenu"
End If
End Sub
Finalmente, 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.
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
Descarga el archivo del ejemplo
Últimas publicaciones
0 comentarios