Búsqueda contenido cuadro texto

Estoy haciendo una base de datos para gestionar los viajes, y desearía realizar búsqueda con un cuadro de texto, es decir, que al escribir una palabra clave del viaje me salga el viaje o los viajes que contengan esa palabra, tengo ya creado un botón de buscar que al hacer click busca lo que hay en el cuadro de texto, pero tiene que ser exactamente lo que pone, no pueden ser palabras "sueltas"
Private Sub Comando46_Click() 
If Not IsNull(Texto44) Then 
        Me.FilterOn = True 
        Me.Filter = "Asunto = Forms!F_buscar!texto44" 
    Else 
        Me.FilterOn = True 
    End If 
End Sub 
Private Sub Comando46_Click()If Not IsNull(Texto44) Then        Me.FilterOn = True        Me.Filter = "Asunto = Forms!F_buscar!texto44"    Else        Me.FilterOn = True    End IfEnd Sub
Respuesta
1
Ponemos un cuadro de texto que llamamos Buscar, en ese cuadro
de texto introducimos la cadena que queremos buscar en el campo
Viaje de la tabla Viajes.
Creamos un cuadro de lista que llamamos, por ejemplo Lista1 El código
sería:
Option Compare Database
Public vViaje As String
Private Sub Buscar_LostFocus()
vViaje = "*" + Form!Buscar.Value + "*"
Form!Lista1.RowSource = "select Viaje From Viajes
where Viaje like '" & vViaje & "'"
Me.Refresh
End Sub
Private Sub Lista1_Click()
Me.Refresh
End Sub
Como ves lo que hago es crear una variable vViaje pública, después en
la acción Al perder el enfoque del cuadro de texto Buscar igualo esa
variable al valor del cuadro de texto con * a ambos lados para que
luego me sirva para el like Después igualo el origen de la fila de
Lista1 a la sql. De esta forma te saldrán en el cuadro de lista todos
los registros que contengan la cadena que tecleaste en el cuadro de
texto y es en el cuadro de lista donde tendrás que elegir el valor
con un clic
Hola muchas gracias, me han quedado algunas dudas, lo primero: ¿Puedo hacerlo directamente en un formulario? ¿Sin cuadro de lista? Es decir, he creado un formulario con el asistente y las tabulaciones para que me salgan una lista con todos los viajes, bien pues en el encabezado he creado un combox con los nombres de asistentes y un botón buscar que me funciona correctamente, y me sale el resultado en la "tabla/lista" de ese formulario; bien pues ahora quiero crear lo mismo pero con el lugar y el asunto, pero estos quiero que sean cuadros de texto, en el que escriba y me de la solución abajo.
He probado lo que me dices, creando un formulario nuevo, insertando un cuadro de lista de la tabla, pero me da error poniendo lo que tu me dices.
Mi cuadro de texto se llama: Buscar
Mi cuadro de lista: Lista1
Campo viaje: le llamo Asunto
Y la tabla viajes: se llama Datos...
¿Quedaría entonces así, no? Pues me da error en esas comillas --> where Asunto Like '" & vViaje & "'"
Option Compare Database
Public vViaje As String
Private Sub Buscar_LostFocus()
vViaje = "*" + Form!BUSCAR.Value + "*"
Form!Lista1.RowSource = "select Asunto From Datos "
where Asunto Like '" & vViaje & "'"
Me.Refresh
End Sub
Private Sub Lista1_Click()
Me.Refresh
End Sub
Option Compare DatabasePublic vViaje As StringPrivate Sub Buscar_LostFocus()vViaje = "*" + Form!BUSCAR.Value + "*"Form!Lista1.RowSource = "select Asunto From Datos "where Asunto Like '" & vViaje & "'"
Me.RefreshEnd SubPrivate Sub Lista1_Click()Me.RefreshEnd Sub
Creo que el error está en la concatenación de distintas filas en sql, o lo pones en una fila:
Form!Lista1.RowSource = "select Asunto From Datos where Asunto Like '" & vViaje & "'"
o si quieres concatenar:
Form!Lista1.RowSource = "select Asunto From Datos " _
& "where Asunto Like '" & vViaje & "'"
Ya lo he cambiado y el error de sintaxis ya no sale, pero no me hace nada, ¿qué debería hacer?
Si te parece me mandas la BD (en access 2003 y, si puede ser, comprimida en rar o zip)y la echo un vistazo, porque debería funcionar.
[email protected]

1 respuesta más de otro experto

Respuesta
Es más sencillo si utilizas una consulta de access con el criterio Like (Como) y seguido de la ruta de la caja de texto. Con ello podrás utilizar el carácter "*" o "?", para buscar solo trozos de una cadena.
En la consulta tu criterio de búsqueda quedaría así:
Como Forms!F_buscar! Texto44
Lo que no me indicas es donde quieres que te aparezcan los datos. Si en el mismo formulario o en otro distinto.
El carácter asterisco (*) colocado antes de tu trozo de cadena indicará que busque las cadenas que terminen según lo que hayas escrito. Colocado el final te permitirá definir el inicio y deja abierto cualquier variación al final. Con el aterisco al principio y al final, te buscará lo que hayas escrito en cualquier parte del texto.
Los signos de interrogación sólo sirven para sustituir un carácter de forma individual.
Los valores nulos no serán presentados.
Por ejemplo, escribiendo en tu cuadro texto de búsqueda:
*pila, te presentará todas las frases que finalicen en pila independientemente de lo que tengan antes, incluso si son varias palabras.
pila*, te presentará todas las frases que empiecen con pila
*pila*, presentará todas las frases que en cualquier parte tengan la secuencia de caracteres similar, incluidas las que empiecen y terminen con dicha secuencia.
Si necesitas más ayuda para presentar o rescatar la información de la consulta me avisas,
saludos.
Muchas gracias, te comento, he creado un formulario con el aasistente y las tabulaciones para que me salgan una lista con todos los viajes, bien pues en el encabezado he creado un combox con los nombres de asistentes y un botón buscar que me funciona correctamente, y me sale el resultado en la "tabla/lista" de ese formulario; bien pues ahora quiero crear lo mismo pero con el lugar y el asunto, pero estos quiero que sean cuadros de texto, en el que escriba y me de la solución abajo.
Private Sub Comando46_Click()  
If Not IsNull(Texto44) Then  
        Me.FilterOn = True  
        Me.Filter = "Asunto = Forms!F_buscar!texto44"  
    Else  
        Me.FilterOn = True  
    End If  
End Sub  
Private Sub Comando46_Click()If Not IsNull(Texto44) Then        Me.FilterOn = True        Me.Filter = "Asunto = Forms!F_buscar!texto44"    Else        Me.FilterOn = True    End IfEnd Sub
poniendo esto me va bien, me realiza la busqueda pero tiene que ser si pongo exatamente lo mismo, y yo quiero que me busque por el contenido, para que quien quiera buscar lo tenga facil, es decir que si esta guardo como "sevilla (Andalucia)", que no necesariamente, tenga que poner eso, si no que sea suficiente con poner sevilla. espero haberme explicado, muchas gracias y haber que me dices..
OK,
Escríbelo así :
Me.Filter = "Asunto like '" & "*" & Forms!F_buscar!texto44 & "*" & "'"
Lo he probado y funciona.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas