Usar función Dir para saber si el archivo existe en consulta de Access

Tengo una tabla en la que guardo el nombre del archivo de imagen de cada registro. En esta misma tabla también guardo, a través de los campos Categoría y Subcategoría, la carpeta y subcarpeta donde se guarda dicha imagen. Como he detectado que tengo algún fallo en algunas de ellas, quiero hacer una "consulta" en la que pueda ver solo los registros cuya imagen no exista en las carpetas especificas.

La dirección completa de la imagen la guardo como  RutaImagen :[Ruta] & "\" & [Categoría] & "\" & [Subcategoría] & "\" & [NombreArchivo] y en otra expresion posterior pongo Existe:Dir([RutaImagen]).

Cuando ejecuto la consulta me dice "La función 'Dir' no esta definida en la expresión.

Por favor, me podéis decir como hacerlo sin error.

1 respuesta

Respuesta
3

Eso es porque la función Dir es una función de VBA, no una función de Access, pero muy fácilmente puedes construirte una función propia (que pondrás en un módulo independiente) que usando Dir, te diga si existe o no, por ejemplo:

Public Function fncExiste(elArchivo As String) As Boolean
   fncExiste = Not CBool(Dir(elArchivo, vbArchive) = "")
End Function

y en la consulta la usas poniendo: 

Existe: fncExiste([RutaImagen])

o

Existe: fncExiste([Ruta] & "\" & [Categoría] & "\" & [Subcategoría] & "\" & [NombreArchivo])

Y te devolverá 0 si el archivo no existe o -1 si existe.

También puedes optar por una función de este otro tipo:

Public Function fncExiste(elArchivo As String) As String
   If Dir(elArchivo, vbArchive) = "" Then
      fncExiste="No existe"
   Else
      fncExiste="Sí existe"
   End If
End Function

y la usas del mismo modo. Te dirá: "No existe" o "Sí existe" (o el texto que le quieras poner)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas