¿Como hacer para que al abrir bd access compruebe txt antes de abrir primer formulario y si no existe salda mensaje de error?

Gracias de ante mano tengo un problema y es que quiero que cuando una base de datos access se abra, que el formulario principal al cargar verifique en "sistem32" un fichero txt . Si este fichero exixte deja seguir y si no te salta un mensaje de error y cierra la base de datos.

Seria para evitar que si me copian la base de datos y la instalan en otro pc si no tienen este fichero no se pueda ejecutar.

Respuesta
2

Puedes hacer algo como ésto: En el Evento Form_Load()

Dim FicheroSondeo As String
FicheroSondeo = "C:\Windows\System32\NombreTxt.txt"
'NombreTxt.txt lo sustituyes por NOMBRE que tu quieras poner
If ExisteFichero(FicheroSondeo) = False Then
        MsgBox "No estás autorizado a usar ésta BD" & vbCrLf & "Consulta con el Administrador" & vbCrLf & _
                        "Esta sesión se cerrará", vbCritical, "FUERA DE LUGAR"
        DoCmd.Quit
        Exit Sub
Else
        'Sigo el Proceso
End If

En un Módulo Estandar Copia y pega la Función que sondea si existe el Fichero

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
Else
        ExisteFichero = False
End If
End Function

Mis saludos >> Jacinto

me da error al compilar  creo que el problema es que falta definir la variable 

ExisteFichero

si la creo me da el error : se esperaba una matriz 

tienes idea de que puede ser? 

muchas gracias por tu ayuda

¿Has copiado la Función ExisteFichero? . Si me explicas los pasos que has dado y como lo has montado, posiblemente me de una pista, porque con el código que te he facilitado debería de funcionar. Un saludo >> Jacinto

El primer código lo e puesto en el evento al cargar pero el otro del modulo estándar no se que es.

Un módulo Estándar es aquel que tiene código para llamarlo desde cualquier punto de la Aplicación, pero si representa para ti una dificultad, copia el código en el mismo Formulario.

Un saludo >> Jacinto

1 respuesta más de otro experto

Respuesta
2

Siento tener que decirte que es algo más complicado. Verás, aunque pongas algo en el formulario de inicio, si abres la base de datos con la tecla SHIFT pulsada, se abre en la ventana base de datos, omitiendo lo de abrir el formulario de inicio, con lo cual mientras no lo abran te pueden estar revisando las tablas, consultas e incluso entrar en el diseño del formulario de inicio y quitar las líneas de código.

Por eso sería conveniente desactivar la tecla SHIFT, que no me extiendo porque hay mucha bibliografía en Internet. Vamos a suponer que el nombre de usuario de tu ordenador es Cuatro4. Complementaría lo anterior con poner en el evento Al cargar del formulario de inicio

If environ("username")<>"cuatro4" then

docmd.quit

end if

Es decir, que si el ordenador es distinto al tuyo, se cierra la base

Si has dado estos pasos ¿qué sucedería si alguien te la copiara?. En su ordenador haría doble clic sobre el icono, o desde el propio Access intentaría abrirla, y como se ejecutaría lo del formulario de inicio, al no ser ese usuario. Se cerraría, intentaría abrirla manteniendo la tecla SHIFT pulsada, pero como estaría anulada, trataría de abrirse normalmente y estaríamos en el caso anterior.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas