Buscar un dato sólo en los registros filtrados

Es una pregunta para Jacinto Trillo

Hola a raíz del ejemplo que me enviaste de RegistrosSiNoTodos en la pregunta Botón para eliminar, desactivar o colorear registros" se me ha planteado la siguiente cuestión:

Yo tengo un código para realizar búsquedas de un dato en los registros del formulario.

Hasta ahora las búsquedas las hacía en todos los registros del formulario a partir de un botón que buscaba el dato que insertaba en un cuadro de texto "Txt_Buscar"

Me había planteado la posibilidad de realizar las búsquedas en vez de en todos los registros, mejor una vez he filtrado los registros, para que así me busque sólo en los registros que devuelve el filtro, siguiendo tu ejemplo en los registros servidos, no servidos y en todos.

El código de búsqueda que uso en todos los registros es:

Me.RecordSource = "Select * from Libros where titulo like '" & Me.txt_Buscar & "' " & _
"or titulo like '* " & Me.txt_Buscar & " *' " & _
"or titulo like '* " & Me.txt_Buscar & "' " & _
"or titulo like'" & Me.txt_Buscar & " *' " & _
“or categoria like '" & Me.txt_Buscar & "' " & _
"or categoria like '* " & Me.txt_Buscar & " *' " & _
"or categoria like '* " & Me.txt_Buscar & "' " & _
"or categoria like '" & Me.txt_Buscar & " *' " & _
“or genero like '" & Me.txt_Buscar & "' " & _
"or genero like '* " & Me.txt_Buscar & " *' " & _
"or genero like '* " & Me.txt_Buscar & "' " & _
"or genero like '" & Me.txt_Buscar & " *' "

Cómo podría modificarlo para que una vez filtro con el combo me busque los datos solo en los registros filtrados.

Si no te viene mal mostrármelo en el ejemplo que me enviaste de RegistrosSiNoTodos te lo agradecería. Evidentemente para asignarlo a tu ejemplo la búsqueda se haría en menos campos pero es más que nada para ver la metodología.

2 respuestas

Respuesta
1

Mientras Jacinto te prepara su ejemplo, te comento que la forma de hacerlo es encadenar los dos filtros. Por ejemplo si primero filtras por los libros que existen, en tu código tendrás lineas como estas:

Dim miFiltro As String

miFiltro="Existentes=True"

Me.Filter=miFiltro

Me.FilterOn=True

Si ahora quieres filtrar los libros del año 2015, como te decía, has de encadenar los filtros. En el procedimiento en el que hagas el segundo filtrado yo haría:

Dim miFiltro As Stting

miFiltro=Me.Filter  'Coges el filtro actual

miFiltro= miFiltro & " AND Año=2015"  'Encadenas el nuevo criterio

Me.FilterOn=True  'Aplicas el filtro compuesto

La idea es, en resumen, coger el filtro anterior (lo tienes en Me. Filter), le añades el operador AND (con un espacio antes de la A) y el nuevo criterio de filtro, que se lo puedes poner directamente como el ejemplo del año, o vincularlo a un control de tu formulario.

Un saludo.


Hola Sveinbjorn

Lo de endadenar varios filtros para hacer uno compuesto lo entiendo como concepto pero la parte técnica me falla, lo que quiero es poder buscar dentro del filtro un dato.

¿Cómo podría dentro después de filtrar por los libros que existen, poder buscar solo en esos registros un dato?

Yo había puesto esto pero no funciona:

Con un botón "EXISTENTES" aplico el filtro:

Dim miFiltro As String

miFiltro="Existentes=True"

Me.Filter=miFiltro

Me.FilterOn=True

y luego creo un botón de búsqueda de datos solo en los registros filtrados, los existentes.

If miFiltro="Existentes=True" then

Me.RecordSource = "Select * from Libros where titulo like '" & Me.txt_Buscar & "' " & _
"or titulo like '* " & Me.txt_Buscar & " *' " & _
"or titulo like '* " & Me.txt_Buscar & "' " & _
"or titulo like'" & Me.txt_Buscar & " *' " & _
“or categoria like '" & Me.txt_Buscar & "' " & _
"or categoria like '* " & Me.txt_Buscar & " *' " & _
"or categoria like '* " & Me.txt_Buscar & "' " & _
"or categoria like '" & Me.txt_Buscar & " *' " & _
“or genero like '" & Me.txt_Buscar & "' " & _
"or genero like '* " & Me.txt_Buscar & " *' " & _
"or genero like '* " & Me.txt_Buscar & "' " & _
"or genero like '" & Me.txt_Buscar & " *' "

end if

Quiero hacer la búsqueda de datos dentro del filtro de los libros existentes.

Si pudieras indicarme cómo quedaría exactamente.

Un saludo y muchas gracias por la ayuda

Pues si lo entiendes a nivel teórico, lo tienes explicado de la forma más sencilla en mi respuesta, pero si quieres ver algo más complejo, visita este ejemplo de Neckkito: http://siliconproject.com.ar/neckkito/index.php/component/content/article/93-ejemplos-explicados/ejemplos-de-formularios/194-crear-un-filtro-multiple

El código que pones no te funciona por una sencilla razón, no estás teniendo en cuenta el primer filtro (Existe=True) al asignarle el recordset al formulario. Dicho de otra forma, tienes que encadenar ese filtro con el que haces para buscar el título.

Tienes dos opciones:

1º/ Me.RecordSource = "Select * from Libros where Existentes=True AND titulo like '" & Me.txt_Buscar & "' " & _ ....

2º/ ... "or genero like '" & Me.txt_Buscar & " *' AND Existentes=True"

En ambos casos el if te sobra, a mi modo de ver.

Hola

Ok ahora lo veo claro, es que no sabía cómo añadir concretamente el segundo filtro que en mi caso es una sql.

Gracias Sveinbjorn

Respuesta
1

Depro: Tú y Diego estáis muy trabajadores en éste comienzo de año. Te estoy contestando desde fuera de mi PC, al igual que algún comentario que acabo de responder.

Te contesto "ASAP". Es para no decirte Estoy en ello. Saludos >> jacinto

Muchas gracias Jacinto

Sí al principio de año siempre tengo propósitos de enmienda y buenas intenciones de terminar objetivos. A ver si me dura je je

Un saludo

Depro: Creo tener bastante claro lo que pretendes, y en ese sentido si tu así lo quieres, te puedo personaliar un Visor del estilo de éste que tengo en>>

http://www.mediafire.com/download/j2tnbpvxs61inpz/BDIngSocial_02.rar 

Para ello si que necesitaría tu BD con solo los Objetos implicados, que pueden ser la Tabla de Libros y alguna asociada si es que la hay, con unos cuantos datos inventados si los que tienes llevan algo Confidencial.

Puedes poner tu BD en un enlace aquí o mandarmela a [email protected]

En cualquiera de los dos casos, si es que lo autorizas, el resultado lo haría público en un enlace aquí, y si no te lo envío a tu correo personal. Saludos >> Jacinto

Hola Jacinto

Antes que nada muchas gracias por las molestias

El ejemplo último que me has mandado no lo puedo abrir.

Tengo instalados access 2003 y access 2007, éste último para poder abrir los  archivos access con el nuevo formato .accdb.

He intentado abrir tu archivo BDIngSocial_02 y el access 2007 me salta un mensaje de que no reconoce el formato... pero es muy raro porque el resto de ejemplos que me has enviado los he abierto sin problemas con el access 2007. Si me lo pudieras volver a enviar, o comproblar si se puede abrir... y así veo el visor que me comentas.

Estoy preparando la BD con lo básico para enviártela via email.

Un saludo gracias por la ayuda

Depro: He modificado una BD en Formato .mdb y creo que lo podrás abrir ahora.

http://www.mediafire.com/download/re8br02jl97am6a/FiltraVarios.rar 

He comenzado a prepararte algo sobre las otras dos preguntas.

Un saludo >> Jacinto

Hola Jacinto

Yo puedo abrir tus ejemplos perfectamente en access 2007 que como te comentaba me permite ver archivos en accdb. por eso si puedes comprobar por qué no se abre el archivo BDIngSocial_o2 y me lo reenvías, más que nada por ver el visor.

Prefiero Jacinto que me envíes los ejemplos con el formato nativo de tu versión de access que supongo que es accdb.

Hasta ahora siempre he podido abrir tus ejemplos y están en accdb.

No es necesario de verdad que me hagas nuevos en mdb, mándamelos con el formato que los tienes creados que puedo abrirlos.

Las otras 2 preguntas que te puse si quieres déjalas con el mismo formato que me has enviado el ejemplo RegistrosSiNoTodos, que creo que accdb, lo prefiero si no te importa.

Ahora te envío mi BD por email

Un saludo y gracias

Depro: El enlace que te acabo de poner arriba" FiltraVarios" es una BD que tenía en Formato .mdb y le he incorporado "Todos" los Objetos de BDIngSocial_02. Accdb.

Si es que crees que puede ser adecuado para ti, te lo incorporaré en tu propia BD.

Por supuesto que lo de Eliminar Duplicados y Evitar duplicados te los Incorporaré en la BD ejemplo que abres perfectamente, que es RegistrosSiNoTodos. Accdb

Mis saludos >> Jacinto

Hola Jacinto

Ok muchas gracias, ahora estudio tu ejemplo

Acabo de enviarte la BD por email.

He quitado todo lo innecesario, consultas, formularios y te la he mandado como me comentaste con lo neceario para crear el visor que es la tabla "Libros".

Por cierto, solo por curiosidad ¿por qué no podré abrir BDIngSocial_0.accdb ... los otros archivos en accdb que me has enviado como RegistrosSiNoTodos.Accdb los he podido abrir sin problemas? Estoy usando access 2007.

De hecho ahora ya no quiero usar el 2003 ni los mdb je je. Al final veo que las nuevas versiones, bueno no tan nuevas ya como 2007 son más potentes.

Un saludo

No la puedes abrir porque está creada desde cero en Access 2010.

Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas