Buscador con listado en Access

Estoy acabando una base de datos y ahora estoy con el formulario de búsqueda, lo tengo hecho de la siguiente forma.

Los campos son los siguientes

Buscar: es un "Cuadro de texto" y el nombre es "txtBusqueda".

Resultados: es un "Cuadro de lista" y el nombre es "Lista".

Formulario: su nombre "Buscador"

Intento conseguir que escribiendo en el cuadro de texto "Buscar" me vaya saliendo los resultados en "Resultados", pero que al abrir el formulario Buscador el cuadro de lista este vacío, que solo salga el resultado cuando busque.

Por el momento he conseguido que busque solo por Nombre pero necesito añadir mas campos de búsqueda, el código que tengo es el siguiente.

SELECT Datos.Id, Datos.Nombre, Datos.Apellidos, Datos.DNI
FROM Datos
WHERE (((Datos.Nombre) Like "*" & [Formularios]![buscador]![txtBusqueda].[Text] & "*") OR ((Datos.Apellidos) Like "*" & [Formularios]![buscador]![txtBusqueda].[Text] & "*") OR ((Datos.DNI) Like "*" & [Formularios]![buscador]![txtBusqueda].[Text] & "*"));

El problema que tengo es que al abrir el formulario Buscador me sale en el "Cuadro de lista" todos los ID de la base de datos cosa que necesitaría que saliera vacía. 

Y al buscar por nombre me sale solo el ID donde esta situado y no me sale mas información.

Si busco por apellidos o por DNI no me muestra ningún resultado. ¿Habría alguna forma de solucionar esto?

4 respuestas

Respuesta
4

El problema que comentas, que solo te salga el Id al buscar, es porque tienes mal configurado el cuadro de lista. Si sacas sus propiedades y vas a la pestaña Formato, verás que hay una propiedad que es Número de columnas, que has de poner en 4 (los campos de tu SQL: Id, Nombre, Apellidos y DNI) y otra Ancho de columnas que has de configurar con el ancho que quieras para cada columna, separadas por punto y coma, teniendo en cuenta que si quieres ocultar alguna, has de darle ancho 0 cm, por ejemplo: 0cm; 3cm; 5 cm; 1,5 cm

Para que el cuadro de lista te aparezca vacío al abrir el formulario, o bien le quitas el "origen de la fila"en sus propiedades, pestaña Datos, o en el evento "al cargar" del formulario le pones:

Me.Lista.RowSource=""

Me. Lista. Requery

Respuesta
3

Supongamos que tienes una tabla Clientes con Idcliente, NombreCompañia, nombrecontacto, ciudad y país. Aunque personalmente yo cambiaría el cuadro de texto por un combinado ya que siempre es más cómodo elegir que escribir, y deja el origen de la fila del cuadro de lista vacío y suponiendo que en el cuadro de texto escribas un país, en el evento Después de actualizar del cuadro de texto txtbuscar crea un procedimiento de evento y pon

resultado.rowsource="select nombrecompañia,nombrecontacto,ciudad from clientes where pais='" & me.txtbuscar & "'"

Cuando abras el formulario como el cuadro de lista no tiene origen de la fila te aparece en blanco hasta que pongas algo en el cuadro de texto.

Item más. Si tengo una tabla Clientes

Y tengo un formulario, en este caso le he llamado formulario 1

Si elijo un país

El resultado es

El código del evento Después de actualizar del combinado al que he llamado como tú txtbuscar(que puede ser un cuadro de texto) es

Luego, en el cuadro de lista, tambien le puedes poner en el evento Después de actualizar lo que quieres que haga cuando selecciones algún valor.

Respuesta
2

Creo que lo que buscas está ya hecho.

En la Web de Neckkito, mira éste ejemplo>>

Mis saludos >> Jacinto

Respuesta
1

Vale gracias a todos acabe el buscador he tenido algún que otro problema pero los he podido resolver. Todas las respuestas fueron buenas y validas, por si a alguien más necesita la ayuda.

La pregunta no admite más respuestas

Más respuestas relacionadas