Comprobar ficheros txt que cumplen con requisito

Tengo en un directorio concreto (c:\imagenes) cientos de ficheros jpg. En otro directorio (c:\textos) tengo igual número de ficheros txt con la descripción de esas imágenes y por último, una base de datos Access con una tabla (IMAGENES) con los campos ID y NOMBRE. En esta tabla, en el campo NOMBRE aparecen todos los nombres de los ficheros jpg que indico en el párrafo anterior.

En estos momentos puedo recorrer la tabla a través de un formulario en el que aparece cada imagen con su correspondiente descripción tomada de cada fichero txt.

Lo que no consigo ver es cómo puedo hacer para, indicando una palabra, obtener un formulario similar que únicamente me recorra los registros que cumplan con la condición de que esa palabra, aparezca en el fichero txt.

1 Respuesta

Respuesta
1

¿

¿Podría colocar la estructura del fichero .txt?

Hola Eduardo.

Los ficheros txt no tienen una estructura determinada si no que se trata de textos que describen y comentan la imagen a la que corresponden.

Gracias y saludos

Muy bien ya entiendo voy a prepararle un ejemplo.

¿Cómo identifica que el archivo texto pertenece a una descripción un a un ID?.

Tengo el registro:

ID=2

IMAGEN="c:\imagenes\imagen01.jpg"

¿Qué nombre le asigna al archivo en c:\textos a esta imagen? ¿Sigue algún patrón para el nombre?

Hola.

¿Cómo identifica que el archivo texto pertenece a una descripción un a un ID?.

Siguiendo con el ejemplo que me pones, a IMAGEN="c:\imagenes\imagen01.jpg le corresponde TEXTO="c:\texto\imagen01.txt


¿Qué nombre le asigna al archivo en c:\textos a esta imagen? ¿Sigue algún patrón para el nombre?

El nombre en c:\textos y en c:\imagenes es el mismo.

Gracias

He preparado este ejemplo con base en la información suministrada, consta de 2 tablas 1 formulario 1 módulo.

Tabla imagenes y ruta del archivo

ARCHIVOS EN LA CARPETA C:\textos

CONTENIDO EN LOS ARCHIVOS

FORMULARIO PARA BUSCAR TEXTO EN LOS ARCHIVOS .TXT

Con base en las imágenes anteriores vamos a buscar los archivos texto que tengan la palabra Colombia. Observe que en el cuadro de lista se muestran los archivos: imagen01.txt, imagen03.txt e imagen04.txt

Si hago clic sobre el archivo imagen01.txt en el cuadro de texto de la derecha me muestra el contenido del archivo.

CÓDIGO DEL BOTON BUSCAR ARCHIVOS

TABLA AUXILIAR PARA GUARDAR LOS NOMBRES DE ARCHIVOS ELEGIDOS

Esta es la tabla origen de datos del cuadro de lista.

Código de la función que hace la búsqueda

Esta es la parte principal, toda vez, que siguiendo la idea se puede adaptar para otros trabajos.

Espero le sirva, si quiere el ejemplo puede solicitarlo a [email protected] favor anotar en el asunto su consulta.

Antes de nada, muchas gracias Eduardo por el ejemplo.

Quisiera comentarte un par de asuntos a ver si se pueden modificar:

- Los ficheros txt que tengo son ficheros un poco largos y veo que en tu ejemplo, salvo error, únicamente busca el texto en el primer párrafo desechando el resto del texto.

- Por otra parte en nuestra tabla no aparece el campo TEXTO sino que únicamente tenemos los campos ID (autonumérico) y NOMBRE (este campo no es la dirección del fichero jpg sino solo su nombre, por ej. IMAGEN01). El texto del fichero TXT lo incluimos en el formulario por código:

Me!Imagen13.Picture = CurrentProject.Path & "\IMAGENES\" & Me!ARCHIVO & ".jpg"

F = FreeFile
Open CurrentProject.Path & "\TXT\" & Me!ARCHIVO & ".txt" For Binary As #F
Me.COMENTARIOS = Input(LOF(F), #F)
Close #F

No se si sería posible realizar alguna modificación en el ejemplo para que se ajustara a lo que te indico.

Muchas gracias por anticipado.

El campo TEXTO lo nclui como información pero no lo utilizo para nada. Es suficiente con encontrar la primera coincidencia para seleccionar el archivo. La función debe leer todos los párrafos de un texto hasta encontrar la coincidencia, no obstante, voy a probar con un texto más extenso y le cuento.

Efectivamente en la función ExisteEnArchivo() me equivoqué en la siguiente línea :

line = archivo.ReadLine    

Cambie esta línea por:

line = archivo.ReadAll

Así no importa que el archivo texto sea extenso, si encuentra la coincidencia lo selecciona.

Disculpas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas