Criterio de consulta para búsqueda por dos palabras desde formulario

Tengo un formulario para buscar registros; los registros encontrados me los muestra en un informe (como subinforme dentro del formulario) que obtiene los datos de una consulta.

Los resultados de la búsqueda los obtengo mediante criterios en la consulta, por ejemplo: Como "*" & [Formularios]![Buscador]![Busqueda] & "*"

Así, si en el campo de búsqueda del formulario escribo "papá" me aparecen todos los registros donde contenga la palabra "papá" como parte del texto (ejemplos: mi papá es alto; papá tiene un coche; el coche de papá).

Ahora bien, si quiero encontrar los registros que contengan la palabra "papá" Y "mamá" debería escribir la siguiente expresión en el criterio de la consulta: Como "*papá" Y Como "*mamá". Con ello me aparecerían todos los registros que contengan las palabras "papá" y "mamá" dentro del texto (ejemplos: mi papá es alto como mamá; mamá y papá tienen un coche).

La consulta es ¿qué debo poner en el criterio de la consulta para que coja las dos palabras del formulario y me de esos resultados?

Creo que debería poner algo así: Como "*" & Reemplazar([Formularios]![Buscador]![Busqueda];" ";"*" Y Como "*") & "*" pero no consigo que funcione. Pero no consigo que funcione.

¿Alguien me podría ayudar con esto?

Nota: quisiera evitar el código VBA

1 respuesta

Respuesta
1

David: La Forma más simple evitando VBA, la veo añadiendo en tu Formualari un nuevo TextBos que se llame por ejemplo Palabra2 y en la consulta poner

Como "*" & [Formularios]![Buscador]![Busqueda] & "*" Y Como "*" & [Formularios]![Buscador]![Palabra2] & "*"

Mis saludos >> Jacinto

Hola Jacinto:

Claro, esa sería una solución pero, si bien es una solución fácil, resulta también incómodo para buscar.

Lo ideal es escribir las palabras (2 o más) y encontrar los registros que las contengan (Como "Juan" Y Como "Pedro" Y Como "Ana").

Tiene que haber una manera de escribir una expresión en el criterio de la consulta que funcione.

Gracias por tu pronta respuesta.

Saludos

David: Cuando dices .."los registros que las contienen".., supongo que te estás refiriendo a distintos Registros de un solo campo. ¿Eso es así?. De acuerdo a tu respuesta, miro de ver que se puede hacer, solo con la consulta. Mis saludos >> Jacinto

David: dado que ya es tarde aquí tte adelanto lo que creo que te mostrará lo que buscas.

La condición es que separes las entradas a Cuadro de texto por un caracter. Yo he tomado para el Ejemplo el (;), punto y coma.

Como "*" & Izq([Formularios]![Buscador]![Busqueda];EnCad([Formularios]![Buscador]![Busqueda];";")-1) & "*" Y Como "*" & Medio([Formularios]![Buscador]![Busqueda];EnCad([Formularios]![Buscador]![Busqueda];";")+1) & "*"

La entrada debes hacerla como Pap;Mam o como Juan;Alberto

Un saludo >> Jacinto

Hola Jacinto:

Efectivamente, por "los registros que las contienen" me estaba refiriendo a distintos registros de un solo campo.

Con respecto a tu solución, veo que sólo permite dos palabras y separadas por ";". Y eso tampoco me convence. La idea es que se puedan escribir una, dos, tres o más palabras en un cuadro de texto y que el buscador filtre los resultados mostrando los registros que contengan, dentro de un campo, las palabras introducidas con independencia del lugar y orden en la que se encuentren esas palabras dentro del texto.

Tal vez hacer eso por medio de un criterio de consulta no sea posible. Tal vez el problema no sea encontrar la expresión correcta, sino que directamente no es posible, aunque me extraña. Tal vez no se pueda introducir un Like/Como dentro de otro Like/Como.

Yo sigo pensando que debe haber una expresión que recoja las palabras escritas dentro del cuadro de texto, cambie los espacios por un "* Y Como *" y se ejecute la consulta adecuadamente.

También he intentado filtrar el informe (subinforme del formulario) mediante una macro con la misma expresión (Como "*" & Reemplazar([Formularios]![Buscador]![Busqueda];" ";"*" Y Como "*") & "*" ) pero no he conseguido hacerla funcionar.

David: Seguro que trabajandolo un poco, se pueden añadir criterios en la parrilla de la Consulta, aunque creo que para lo que "Ahora" pretendes es más adecuado la construcción de un Filtro con VBA. Dado que la pregunta inicial creo que está cubierta, ---"Ahora bien, si quiero encontrar los registros que contengan la palabra "papá" Y "mamá" debería...".., mi sugerencia es que generes otra exponiendo la necesidad de escribir un LIKE múltiple para un TextBox de varias entradas o algo así.

Seguro que tu lo espresasrás con más acierto, porque eres quien mejor conoce la necesidad.

Si vas de acuerdo con la respuesta, la valoras y cierras la pregunta. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas