Como buscar registro en formulario de access

Tengo un formulario en access en el cual meto registros nuevos (nombre, apellidos, dni, dirección etc...) ynavego por los que hay etc. Quisiera incluir un texbox y botón que para que ha razón de lo que quiera buscar nombre, DNI, móvil) me encuentre el registro si lo hubiese. Esta es una idea aunque quizás me den otras soluciones posibles.

2 Respuestas

Respuesta
1

He aquí una idea:

1º/ Un cuadro combinado con los nombres por los que quieres hacer búsquedas (si coinciden con los nombres de las tablas, es más sencillo el código). Lo llamas cboCampo

2º/ Un cuadro de texto, que llamas txtBuscar

3º/ Un botón, llamado cmdBuscar con este código (supondré que los valores de cboCampo coinciden con los nombres de los campos de la tabla, si no tendrás que indicarlo en el código):

'Defines las variables
Dim elCampo As String, elTexto As String
Dim miFiltro As String
'Coges los valores seleccionados
elCampo = Nz(Me.cboCampo.Value, "")
elTexto = Nz(Me.txtBuscar.Value, "")
'Si no hay valor en el combo o en el textbox sales del proceso
If elCampo = "" Or elTexto = "" Then Exit Sub
'Inicializas el filtro
miFiltro = ""
'Actuamos en función del campo elegido
Select Case elCampo
    Case "CodigoSocio" 'El filtro es para datos numéricos
        miFiltro = elCampo & "=" & eltexto
    Case "Nombre" 'El filtro es para datos de texto
        miFiltro = elCampo & "='" & eltexto & "'"
    .... 'Añades tantos Case como campos quieras...
End Select
'Muestras los resultados
Me.Filter=miFiltro
Me.FilterOn=True

Si los valores de cboCampo no coincidieran con los nombres de la tabla (por ejemplo, en el combo pones "Código Socio" y en la tabla es "CodigoSocio", tendrías que indicarlo en la linea miFiltro=..:

miFiltro = "CodigoSocio=" & eltexto

¿Solucionaste este tema de los filtros?

He probado a crear un cbo como me dijiste basado en el campo nombre de la tabla y al seleccionarlo ya me busca el registro solo je je y luego sí hago lo que me dijiste tengo que saber el nombre exacto para escribirlo en el txt y yo lo que me refería es que hiciera la labor del buscador de access cuando creas el botón con el asistente. Es decir crear un texbox en el cual sí meto un nombre o apellido o DNI me encontrará los registros y sí hubiera varios jugar con lo de buscar siguiente etc.

Pero creo que es demasiado complicado je je así que sí tengo que usar el asistente no pasará nada

He intentado convertir esa macro a código para verlo pero con el office 2013 no soy capaz

No Pensé que sería tan complejo

Si quieres que te busque por aproximación, en vez del = tienes que usar el operador LIKE:

miFiltro = "CodigoSocio LIKE *" & eltexto & "'*"

Si el formulario lo diseñas correctamente, con botones de navegación, ya tienes solucionado el que te encuentre más de un registro y te puedas desplazar a él.

Pero de esta forma se sigue necesitando un cbo y un texbox verdad?

Si, los sigues necesitando, para indicar en que campo buscar y lo que buscar

Ups, te puse los * al revés:

miFiltro = "CodigoSocio LIKE "* & eltexto & "*'"

¿Ahora el nombre y apellidos los guardo en un campo llamado nombre se podría usar ese texbox y el que creo nuevo para que compare?

Si eso lo intento en breve

Lo estoy intentando y no me funciona el cmd no hace nada y como te digo ya con el cbo ya me va al registro.

Buenas noches si quieres abro otra pregunta, sol tienes que decírmelo. Estoy intentando realizar lo mismo que me dijiste con consultas para saber las altas y bajas y como estaba cada uno pero ahora con la cuota que tiene cada uno es decir tengo la TCuotas (Socio, Tipo Cuota, Concepto Cuota, Descuento, Importe Y Fecha. Esta planteado en el formulario de Socios como formulario continuo etc.. pues lo he intentado siguiendo los pasos que me manddste anteriormente pero me agrupa por socio es decir del 1 me dice todas las que tiene y yo quiero saber la ultima nada más.

Sigo intentándolo mientras.

Un saludo

Dos cosas:

1º/ Lo del combo no lo entiendo ¿Cómo haces para que te lleve al registro directamente?

2º/ Lo de las cuotas algo no estás haciendo bien, pues si sigues los pasos exactamente, te tiene que salir igual. Si dices que te agrupa por socio, seguramente no agrupes por el máximo de fecha.

Hola,

Lo del combo a la hora de hacerlo para que me coja los valores le ponía que lo buscase en el Formulario de hay que me los encontrase ya al seleccionarlo.

Lo de las consultas lo hice de varias maneras ya y no lo termino de conseguir la ultima que hice es esta y ahora no me da resultado ninguno:

1) Cree la consulta en vista diseño, añdiendo la tabla TCuota y cogí los campos socio, Fecha.

2) Convertí en consulta de Totales, y en el campo Fecha la agrupe por Max.

3) La guarde como CAuxCuota.

4) Cree otra consulta con TCuotas y CAuxCuota.

5) Las relacione por socios y Fecha-MaxdeFecha.

6) Cogí los campos Socio, tipo cuota, concepto cuota, importe, descuento y max de Fecha y la llame CCuotaActual.

Algo agrupo mal o meto campos de más seguro para que no me arroje valores.

Un saludo

Pues en principio lo que haces es correcto, mira a ver si en el punto 6, cogiendo Fecha en vez de MaxDeFecha te sale. Además, esa consulta no la tienes que agrupar.

Yo lo acabo de probar y funciona OK

Me explique mal la ultima no la tenia agrupada por nada, lo que me fallaba era el campo que como bien decías tenia que ser el de Fecha y no MaxdeFecha.

Muchas gracias como siempre

Si quieres te formulo lo mismo en otra pregunta solo tienes que decírmelo.

Me voy a complicar más je je, ahora he creado una consulta en vista diseño añadiendo la tabla socios y así tengo los campos campos y la cuota que tiene por ultima cada socio, esto esta perfecto.

Ahora aprovechado que tengo esa consulta de las cuotas de cada uno lo que quisiera hacer que creo que tengo media idea ya seria en el formulario FSocios poner un botón que me filtre por el socio que esta (eso ya lo hice antes seria igual) para abrir un formulario (para pagar la cuota) es decir tendría que tener los campos (socio, tipo de cuota, concepto de cuota, descuento, importe) esos son los que me interesaría que me trajera ya al filtrarlo pero por ejemplo el campo Fecha tendría que ser el del día que paga y abría que añadir el campo año para diferenciar luego a la hora de hacer filtros o no haría falta.

Creo que todo ello debería ser guardado en una Tabla que se llamara TPagoCuota o algo así.

Un saludo

Mejor plantéalo en una nueva pregunta, porque nos estamos desviando del tema original.

Respuesta
1

Si sólo quieres buscar por un campo cada vez, se me ocurre que pongas un desplegable con los nombres de los campos y un cuadro de texto al lado para el valor a buscar.

Según la versión que uses de access puedes poner que el resultado se actualice después de actualizar el campo de búsqueda o bien mientras se está actualizando.

Espero que te sirva. Si necesitas algo más ya sabes!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas