Código en Access 2010 para evitar que la BBDD sea copiada o si se copia que no funcione

No soy muy experto en el tema de access, y leí en un comentario de todoexpertos, que había una forma en que la base de datos al abrirse, buscase un archivo de verificación, el cual si no estaba dicho archivo en el disco duro, la base de datos no se abría. Presento un pequeño proyecto que he hecho y me gustaría si pudiese ser que me facilitaran ese código para evitar que mi proyecto fuese copiado.

2 respuestas

Respuesta
2

Copia ésta Función en un Modulo Standard

Create un Fichero que se llame por Ejemplo: ElTestigo.txt (puede estar vacio)

Lo pones en un Directorio que tu quieras. Ejemplo C:\DatosDeControl\ElTestigo.txt

Public Function ExisteFichero(RutaNombreFichero As String) As Boolean
'Ha de recibir el Nombre Completo del Fichero Incluida la Ruta
Dim RutaYNombre As String
On Error Resume Next
RutaYNombre = Dir$(RutaNombreFichero)
If RutaYNombre <> "" Then
ExisteFichero = True
End If
End Function

En el Evento Form_Open, o Form_Load del primer Formulario que cargues, llamas a la función, tal como así:

If ExisteFichero("C:\DatosDeControl\Eltestigo.txt") = True Ten

'Aquí sigues con tu código

Else

MsgBox "No se abrirá la Base de Datos"

DoCmd.Quit

End If

Prueba pera antes haz copia.

Lógicamente has de tomar otras precauciones, como proteger el Editor de VBA con Clave, Crear un Accde, que serán trabas para que no te copien el código, y aún así seguro que es vulnerable para expertos de alto nivel. Espero te sirva. Mis saludos >> Jacinto

Al poner la ruta del archivo, me da error de compilación señalándome error en los dos punto de c:\windows

He visto mi código y hay una errata que no sé si has corregido.

If ExisteFichero("C:\DatosDeControl\Eltestigo.txt") = True Ten >> ha de ser Then

Aparte de eso no veo nada extraño. Si aún así no funciona me comentas. Mis saludos >> Jacinto

Respuesta
2

Con la base de datos abierta pulsa Archivo-Opciones-Base de datos actual y desactiva la casilla Mostrar panel de navegación y las de Permitir menús... En esa misma página, en Mostrar formulario elige uno como formulario de inicio.

Luego en el diseño de ese formulario, en sus propiedades-eventos-al cargar crea un procedimiento de evento y entre Private Sub y End sub escribe

If Environ("username") <> "garcia" Then
DoCmd.Quit
End If

Lo de García sería el nombre de tu ordenador. Así, si te la copiaran, como el otro ordenador tendrá otro nombre se cerraría la base. Si eso lo combinas con anular la tecla SHIFT que no te comento nada porque hay 6 millones de ejemplos en internet, se lo pondrás muy, muy difícil y si la conviertes en accde, que se compila el código,(pero acuérdate de guardarte el original en accdb) no hay nada que hacer.

Si quieres saber el nombre de tu ordenado crea un cuadro de texto y en el evento a recibir el enfoque ponle

Txt22=environ("username")

Lo de 22 es inventado

Gracias por la respuesta, muy buena pero vale para que se use en más de un ordenador, ya que va a estar en red y abrirán la aplicación desde varios ordenadores.

Gracias de nuevo

La solución es fácil

If environ("username")="tunombre" or environ("username")="pepe" or... then

docmd.openform"......

else

docmd.quit

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas