Buscar si existe o no en el nombre o parte del nombre de un archivo en una carpeta "X" un registro y mostrarlo en informe Access

Como lo dice el titulo estoy buscando como hacerle para saber si existe en el nombre o parte del nombre de un archivo en una carpeta un registro en Ms Access.

La idea es ejecutar un informe y me de como resultado 2 columnas:

* Orden de compra

* Factura

El listado de "Orden de Compra" lo voy a obtrener de una consulta a mi tabla "OC" por fecha y en la columna "Factura" tiene que salir "SI EXISTE" o "NO EXISTE" dependiendo si el numero de "Orden de Compra" existe en algun nombre de archivo de la carpeta (por poner ejemplo) "c:\temp".

Ejemplo reporte final

Carpeta donde estan las Ordenes de Compra, el numero de Orden de Compra esta en medio del nombre del archivo.

1 Respuesta

Respuesta
1

Puedes hacerlo de varias formas. Te voy explicar una, de la forma más general, para que lo puedas reutilizar fácilmente si te hace falta:

1º/ En un módulo independiente (crea uno si no tienes), pegas esta función:

Public Function fncExisteArchivo(elNombre As String, Optional laCarpeta As String) As String
If IsMissing(laCarpeta) Or laCarpeta = "" Then
    laCarpeta = "C:\Temp\"
End If
Dim elArchivo As String
elArchivo = Dir(laCarpeta, vbArchive)
Do While elArchivo <> ""
    If elArchivo Like "*" & elNombre & "*" Then
        fncExisteArchivo = "SI"
        Exit Do
    Else
        fncExisteArchivo= "NO"
    End If
    elArchivo = Dir
Loop
End Function

2º/ Ahora tienes varias opciones:

Opción a: usar la función en la consulta, creando un nuevo campo que te devuelva el SI o NO, por ejemplo:

Factura: fncExisteArchivo([Orden de Compra])

Y creas el informe sobre la consulta, ya con ese campo

Opción b: usas la factura en el origen de control del cuadro de texto de tu informe:

=fncExisteArchivo([Orden de Compra])

Opción c: usas la función por código, poniendo en el evento "al dar formato" de la sección donde tengas el cuadro de texto:

Me.Factura=fncExisteArchivo(Me.[Orden de Compra])

Si en cualquier momento puntual necesitas buscar en otra carpeta, y no quieres modificar la carpeta "por defecto" en la función, puedes ponerle la ruta a esa carpeta al llamar a la función, por ejemplo:

fncExisteArchivo([Orden de Compra];"C:\Temp\Old\")

Excelente Sveinbjorn, dejame trabajarla y aplicarla a mi archive y te aviso, muchas Gracias!

Prueba y me cuentas, porque te la escribí "al vuelo" e igual hay que afinar alguna cosilla.

Pensé que había posteado ayer mis comentarios Sveinbjorn,

Me funciono la opción b, puse en el origen del cuadro de texto independiente la función

=fncExisteArchivo([Orden de Compra])

Y solo para darle el toque final estaba pensando en como poner en un nuevo cuadro independiente una función para que me diga si mi "Factura" existe o no en la tabla "Auditoria".

No se si se pueda poner un Dlookup en el origen del control

Gracias Nuevamente

Si, no hay problema en que uses la función DLookup() (o DBúsq() ) como origen de control de un cuadro de texto

¡Gracias! 

Sveinbjorn,

¿podrías en esta pregunta decirme como quedaría el DBusq?, si esta la SO, en table "X", coloca en cuadro de texto "SI", de lo contrario "NO".

Saludos

Te respondo en la otra pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas