Access 2007 proced. De evento que verifique que el archivo uno.txt existe en el equipo

Tengo una base Access 2007 y como la vendí necesito protegerla para que sea pasada de equipo en equipo. Pensé crear un botón de inicio en un formulario y que busque un archivo UNO.TXT que yo cree en el c:\windows\system32 y si no esta que cierre la base. ¿Podrán ayudarme?

2 respuestas

Respuesta
2

Juan José: Simplemente sondea si existe >>

Function ArchivoPresente(RutaYNombre As String) As Boolean
If Len(Dir(RutaYNombre)) = 0 Then
     ArchivoPresente = False
Else
     ArchivoPresente = True
End Function

A ésta Función la llamas desde el Open de tu primer Formulario que abras, pasandole la Ruta Completa que según veo es :

If ArchivoPresente("C"Windows\System32\UNO.TXT") Then

'Sigues tu proceso

Else

Docmd.Quit

End If

Mis saludos >> Jacinto

Te agradezco enormemente tu contestación pero no se como escribirla ni donde. Mi menú de inicio puse un botón para abrir el formulario ya propio de la base. Como pongo y donde lo que me escribiste y veo como dos escrituras en tu contestación cual es la q debo poner. Muchas gracias

Juan José: Puedes ponerlo en el Formulario de Inicio, para que no de ninguna Opción:

En el c´código asociado al ese Formulario de Inicio supongo que tendrás el Evento Open y si no lo tienes lo escribes así:

Private Sub Form_Open(Cancel As Integer)
'Desde Aquì mismo sondeas
If ArchivoPresente("C"Windows\System32\UNO.TXT") = False Then
    'Cierras la Aplicación
     Docmd.Quit
Else
      'No haces nada y sigues
End If
End Sub
'No te ovides de Activar el [Procedimiento de Evento] en Propiedades
'La Función puede estar en Cualquier Modulo Estandard ,o aquí mismo a continuación
Function ArchivoPresente(RutaYNombre As String) As Boolean
If Len(Dir(RutaYNombre)) = 0 Then
     ArchivoPresente = False
Else
     ArchivoPresente = True
End Function

Espero ahora lo veas claro: Mis saludos >> Jacinto

no logro hacerlo funcionar.

Juan José: En la Función no has de citar la ruta y el nombre, simplemente escríbela literalmente como te la cité. O sea >>

Function ArchivoPresente(RutaYNombre As String) As Boolean
If Len(Dir(RutaYNombre)) = 0 Then
     ArchivoPresente = False
Else
     ArchivoPresente = True
End Function

Espero que te funcione así. Mis saludos >> Jacinto

Respuesta
2

Disculpad que me meta, pero estáis complicando la cosa innecesariamente:

Crear la función para hacer esto es escribir código por escribir, aunque está correctamente creada y el planteamiento de Jacinto no tiene nada de malo.

Con solo poner en el evento este código, lo tienes resuelto:

If Dir("C:\Windows\System32\UNO.TXT") = "" Then Docmd.Quit

Saludos!


¡Gracias! no pude lograrlo soy demasiado inexperto. exista o no el archivo uno sigue abriendo la base. se ve que hay algo que hago mal. gracias igualmente a todos

Es muy fácil, en el evento "Al cargar" del primer formulario que abras (que debería abrirse automáticamente para que el "invento" te funcione), le pones el código que te dije:

Private Sub Form_Load()
If Dir("C:\Windows\System32\UNO.TXT") = "" Then Docmd.Quit
End If

Puedes verlo, un poco más desarrollado, en esta otra respuesta, en la que también encontrarás otras "medidas" de proteger tu aplicación para aperturas no deseadas: Medidas de seguridad en Access 

te comento lo que hice: abro la base, voy al formulario que aparece como menú de inicio, voy a modo diseño y ahí a propiedades del formulario, voy a la solapa EVENTOS, voy al renglón que dice: Al abrir y copio If Dir("C:\Windows\System32\UNO.TXT") = "" Then Docmd.Quit. lo que pasa que verifique varias veces si estaba UNO:TXT y si esta estaba y en la dirección correcta pero siempre cuando abro la base sale: Microsoft Access no encuentra el objeto ifDir("c:\....... y sigue abajo si if dir("C:\..... es una macro o un grupo de macros nuevos, asegurese de que se haya guardado y de que se haya escrito su nombre correctamente.

No, lo estás haciendo mal:

En la pestaña eventos, en la fila "al cargar", tienes que seleccionar [Procedimiento de evento] y darle al botón con los 3 puntos. Eso te llevará al editor de visual basic, donde le pones el código (el If Dir...)

¡Gracias! no anda, siempre la cierra Y SI CAMBIO LA PREGUNTA siempre la abre este o no el archivo. gracias igualmente por todo

Ok, acabo de ver el problema: aparentemente no puede acceder a la carpeta System32. Si lo pones en otra, por ejemplo C:Windows\, te funcionará: http://filebig.net/files/qDvnRphZBw 

Si la quieres esconder más, es cuestión de que pruebes otras rutas.

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas