** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Formulario de búsqueda
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFormulario de búsqueda

 Responder Responder
Autor
Mensaje
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Tema: Formulario de búsqueda
    Enviado: 15/Agosto/2015 a las 14:14
Hola a todos, soy nuevo en el foro y casi nuevo en Access. Pero eso sí, con muchas ganas de aprender.

Bueno, después de las presentaciones, os cuento...

Tengo un formulario de búsqueda donde presento los datos de un registro que busco a través de un campo "Texto_buscar" y mediante la función "DLookup". Así me quedan devueltos los resultados en todos mis campos del formulario. Pero ahora tengo un problema.

Hasta ahora estaba buscando por nombre y, como todos mis nombres eran distintos, me devolvía perfectamente el resultado del nombre que le ponía. Pero a partir de ahora tengo algún nombre repetido y, según mis conocimientos, DLookup me busca entre los registros y me devuelve aquel que coincida en primer lugar. Es decir sólo me devuelve uno.

No sé si me explico bien. El problema que tengo es que quiero que DLookup me devuelva una lista con todos los registros encontrados que coincidan con el criterio de búsqueda que yo le he puesto.

No sé si DLookup es la función adecuada o hay alguna otra más acertada. Os dejo mi código para que le echéis un vistazo y me digáis algo.

Private Sub Texto_buscar_AfterUpdate()
Nombre = DLookup("[Nombre]", "[Datos]", "Texto_buscar=" & "Nombre")
End Sub

Si no me equivoco lo que le estoy diciendo a Access es que me imprima en el campo "Nombre" del formulario el valor que encuentre en el campo "Nombre" de la tabla "Datos" siempre que coincidan el valor que yo le he dado en el campo "Texto_buscar" del formulario y el campo "Nombre" de la tabla.

Pues bien, de esta manera todo funciona perfectamente pero solo me devuelve el primer valor coincidente. Yo necesitaría que me devuelva varios valores entre los que escoger. No sé si esto podría hacerlo con una ventana emergente que me mostrara la lista de valores, con una tabla de datos incrustada en el formulario, o con cualquier otra opción que se os ocurra.

Bueno, muchas gracias de antemano y espero que podáis darme una solución.

Un saludo.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5183
Enlace directo a este mensaje Enviado: 15/Agosto/2015 a las 15:13
Hola!

Necesitas utilizar el operador "LIKE" y en este foro hay un superespecialista en filtros el compañero (Vimipas) puedes encontrar algún ejemplo suyo en este foro en Tus Funciones Favoritas & Aportaciones & Artí­culos.

de todas formas seria algo así:

Private Sub Texto_buscar_AfterUpdate()

Nombre = DLookup("[Nombre]", "[Datos]", "Texto_buscar Like "*" & Nombre & "*")
End Sub

Un Saludo.
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18811
Enlace directo a este mensaje Enviado: 15/Agosto/2015 a las 15:20
Hola!

efectivamente es un error utilizar Dlookup para devolver mas de un valor, de hecho, desde mi punto de vista, lo es en cualquier caso, es muy lento.

Para devolver varios valores, en la mayoría de los casos, habrás de utilizar un recordset, pero sin saber que pretendes hacer con los datos difícilmente podré decir mas que eso.
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 15/Agosto/2015 a las 15:34
Buenas tardes a todos, 
yo lo haría con ese textbox,  Marco de opciones para seleccionar la opción por la que buscar,  con un listbox para que me de el resultado que busque.

Según lo que tenga seleccionado (Marco de opciones),  con un Select case,  le atribuyo el origen de la fila al listbox concatenado con Like y el textbox de búsqueda.

Algo así,

En el evento "al cambiar"  del textboxBusqueda

Select case Marco opciones

Case is 1

Listbox.RowSource="Select Nombre, apellidos, población From MiTabla Where Nombre='" Like &  me. TextboxBusqueda. Value &  "'"

Case is 2

Más de lo mismo,  filtrando por el campo que queremos buscar

Case is 3

Más de lo mismo,


End Select

Si el textbox no tiene nada,  al listbox le asignamos todos los campos de la tabla,

Listbox. RowSource="Select * From MiTabla"
 

Luego con doble clic en la lista,  paso los datos a los campos con un Recordsetclone.


Trabajar con SQL es mucho más rápido para atacar las  bases de datos que otras opciones.

Editado para corregir errores de la escritura rápida del móvil y ampliar el ejemplo.

Suerte




Editado por jmmiralles - 15/Agosto/2015 a las 16:30
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 16/Agosto/2015 a las 15:24
Hola de nuevo. Lo primero, gracias a todos por las respuestas. Voy a ir probando y en un rato os contaré que he podido sacar en claro.

Un saludo.


Editado por hscnet - 16/Agosto/2015 a las 15:25
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 16/Agosto/2015 a las 17:50
Bueno, aquí estoy de nuevo, a ver si me podéis seguir ayudando. No termino de aclararme. Os cuento.

Os voy a acompañar este mensaje de un pantallazo a ver si consigo aclararme. CORRIJO: Dejo el enlace a la imagen porque la interfaz del foro no me permite adjuntarla. Me dice que no la encuentra. Imagino que será porque es un enlace de Google Drive, o porque es https


Bueno, com veis, y yendo por partes, de arriba a abajo, en el encabezado del formulario después del título (Buscar expedientes), en el espacio que hay vacío, debería el cuadro de búsqueda. A continuación, y una vez tecleada nuestra búsqueda, debería aparecer en la tabla que hay debajo, que es un subformulario en vista de hoja de datos (no se me ha ocurrido mejor forma), el resultado de la búsqueda. Posteriormente el usuario seleccionaría (haciendo clic sobre él) un registro de los que hubiesen aparecido en la tabla y la información completa de ese registro le aparecería en el formulario que hay debajo cada campo completo con su información correspondiente.

En fin, eso es todo lo que quiero conseguir. Solo una cosa más, simplemente deciros que los campos que aparecen en el subformulario (hoja de datos del encabezado) son casi los mismos que los que aparecen en el formulario principal. Es decir, son los mismos, son los campos de la tabla "Datos", pero en el subformulario no están todos, pues no es necesario mostrar toda la información del expediente hasta que no se presenta en el formulario principal.

Bueno, se que parece que el curro que he hecho hasta ahora está en pañales (muy al principio del desarrollo) pero es que no tengo mucha idea de Access y llevo ya un montón de días dándole vueltas a este tema. A ver si podéis echarme una gran mano y pasarme el código completo, paso por paso, que habría que implementar para poder poner esto en marcha.

Muchas gracias de antemano a todos y un SALUDO.




Editado por hscnet - 16/Agosto/2015 a las 17:50
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5183
Enlace directo a este mensaje Enviado: 16/Agosto/2015 a las 18:11
Lo mas simple es seguir estos pasos:

1- Crea una consulta de la tabla origen de registro del subformulario "Resultados de la busqueda".

2- pon el origen de registro del subformulario esta consulta-

3- en esta consulta y en criterio del campo "Nombre" haz referencia al cuadro de texto: Like "*" & Forms![nombredelformulariodondeestae cuadro de texto]![Texto_buscar]&"*"

4- en el evento Despues de actualizar o ele evento al cambiar del cuadro de texto actualizas el subformulario:
    Me.Resultadosdelabusqueda.Requery

asegurate de tener los nombres correctos. Suerte!!!


Editado por mounir - 16/Agosto/2015 a las 18:13
Un Saludo.
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 29/Agosto/2015 a las 18:31
Hola de nuevo a todos. Me pongo otra vez en contacto con todos vosotros simplemente para pedir al administrador que dé el hilo por cerrado. Al final, con las indicaciones que me habéis dado y unas cuantas horas de sueño he conseguido hacer lo que quería, tener un formulario con unos campos de búsqueda/filtrado previos en el encabezado que solo me mostraran el registro que me interesaba.

Muchas gracias de nuevo. Un saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable