** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Búsqueda con mas de 2 palabras
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBúsqueda con mas de 2 palabras

 Responder Responder
Autor
Mensaje
Nasser09 Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Abril/2017
Localización: México
Estado: Sin conexión
Puntos: 70
Enlace directo a este mensaje Tema: Búsqueda con mas de 2 palabras
    Enviado: 04/Marzo/2019 a las 16:46
Buen día:

Por este medio solicito su ayuda para realizar una búsqueda con mas de dos palabras desde una caja de texto, a continuación describo los controles que estoy utilizando:

1 Cuadro combinado (cbocampos)
1 Cuadro de Texto (txtbusqueda)
1 Cuadro de Lista (lstdatos)

Dejo el código que estoy utilizando:

Private Sub txtBusqueda_AfterUpdate()
Dim Buscar as String
if not is null (me.cbocampos) then
buscar = "SELECT Titulo"
buscar = buscar & " from TDatos"
buscar = buscar & " WHERE " & Me.cbocampos & " Like '*" & Me.txtbusqueda & "*' "
Me.lstdatos.RowSource = buscar
End if
End Sub

Con este Código solo realiza la búsqueda de una palabra por ejemplo: 
Casa

pero si yo quiero buscar:
Casa Roja 

Ya no me deja, me podrían ayudar por favor!

Saludos
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11778
Enlace directo a este mensaje Enviado: 04/Marzo/2019 a las 21:05
Hola,

Pues ese código debería encontrar cualquier aparición del literal "Casa Roja" tuviera o no algo delante o detrás. Lo que no encontraría nunca es "Casa es Roja".

Define un poco mejor lo que esperas conseguir cuando dices que quieres buscar más de 2 palabras.
Xavi, un minyó de Terrassa

Mi web
Arriba
Nasser09 Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Abril/2017
Localización: México
Estado: Sin conexión
Puntos: 70
Enlace directo a este mensaje Enviado: 04/Marzo/2019 a las 21:08
Publicado originalmente por xavi xavi escribió:

Hola,

Pues ese código debería encontrar cualquier aparición del literal "Casa Roja" tuviera o no algo delante o detrás. Lo que no encontraría nunca es "Casa es Roja".

Define un poco mejor lo que esperas conseguir cuando dices que quieres buscar más de 2 palabras.
Hola Xavi,
En teoría así lo debería de ser pero cuando escribo una búsqueda con mas de una palabra la caja de texto no respeta los especias que doy entre palabras todo lo deja junto así "CASAROJA".

Gracias por respoder! 
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11778
Enlace directo a este mensaje Enviado: 04/Marzo/2019 a las 21:18
No me cuadra. Algo tienes que quita los espacios.
Divide y vencerás (o al menos sabrás porque "pierdes")

Pon el código de búsqueda en un botón en lugar del AfterUpdate. Ejecútalo paso a paso y analiza los valores que muestra. En algún momento pasa algo que no vemos
Xavi, un minyó de Terrassa

Mi web
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10718
Enlace directo a este mensaje Enviado: 04/Marzo/2019 a las 21:37
A ver si te he entendido bien, suponiendo que pongas CASA ROJA,
- ¿quieres que salgan todos aquellos que tengan CASA y tengan ROJA?
- o ¿quieres que salgan todos los que tengan CASA o tengan ROJA?

En el primer caso quedaría así:
WHERE CampoTabla LIKE '*CASA*' AND CampoTabla LIKE '*ROJA*'

y en el segundo:
WHERE CampoTabla LIKE '*CASA*' OR CampoTabla LIKE '*ROJA*'

El camino a seguir sería convertir el campo de comparación en una tabla (con split usando como separador el blanco) y después apoyado en esta tabla construir la cláusula WHERE.

P.D. Hola Xavi, .... que nos cruzamos poquitas veces Tongue
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5164
Enlace directo a este mensaje Enviado: 04/Marzo/2019 a las 22:13
Buenas noches a todos.

A ver que tal este pequeño ejemplo. Para que estudies un poquito.


Ya nos cuentas.

Saludos.
Gracias
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4275
Enlace directo a este mensaje Enviado: 04/Marzo/2019 a las 23:11
Una aportación mas:

Es mejor usar InStr que Like porque:

los acentos No los encuentra
los CH tampoco lo encuentra
las LL (letras duplicadas) No los encuentra


 


Editado por javier.mil - 04/Marzo/2019 a las 23:12
Arriba
Nasser09 Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Abril/2017
Localización: México
Estado: Sin conexión
Puntos: 70
Enlace directo a este mensaje Enviado: 06/Marzo/2019 a las 15:25
Publicado originalmente por xavi xavi escribió:

No me cuadra. Algo tienes que quita los espacios.
Divide y vencerás (o al menos sabrás porque "pierdes")

Pon el código de búsqueda en un botón en lugar del AfterUpdate. Ejecútalo paso a paso y analiza los valores que muestra. En algún momento pasa algo que no vemos

Muchas gracias por tu respuesta, seguí tu consejo y puse el código en un botón y funciono muy bien muchas gracias.
Arriba
Nasser09 Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Abril/2017
Localización: México
Estado: Sin conexión
Puntos: 70
Enlace directo a este mensaje Enviado: 06/Marzo/2019 a las 15:25
Publicado originalmente por VIMIPAS VIMIPAS escribió:

Buenas noches a todos.

A ver que tal este pequeño ejemplo. Para que estudies un poquito.


Ya nos cuentas.

Saludos.

Muchas gracias por tu ayuda!
Arriba
Nasser09 Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Abril/2017
Localización: México
Estado: Sin conexión
Puntos: 70
Enlace directo a este mensaje Enviado: 06/Marzo/2019 a las 15:26
Publicado originalmente por javier.mil javier.mil escribió:

Una aportación mas:

Es mejor usar InStr que Like porque:

los acentos No los encuentra
los CH tampoco lo encuentra
las LL (letras duplicadas) No los encuentra


 

Muchas gracias!
Arriba
Nasser09 Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Abril/2017
Localización: México
Estado: Sin conexión
Puntos: 70
Enlace directo a este mensaje Enviado: 06/Marzo/2019 a las 15:27
Publicado originalmente por Mihura Mihura escribió:

A ver si te he entendido bien, suponiendo que pongas CASA ROJA,
- ¿quieres que salgan todos aquellos que tengan CASA y tengan ROJA?
- o ¿quieres que salgan todos los que tengan CASA o tengan ROJA?

En el primer caso quedaría así:
WHERE CampoTabla LIKE '*CASA*' AND CampoTabla LIKE '*ROJA*'

y en el segundo:
WHERE CampoTabla LIKE '*CASA*' OR CampoTabla LIKE '*ROJA*'

El camino a seguir sería convertir el campo de comparación en una tabla (con split usando como separador el blanco) y después apoyado en esta tabla construir la cláusula WHERE.

P.D. Hola Xavi, .... que nos cruzamos poquitas veces Tongue

Muchas gracias por tu ayuda, he logrado solucionarlo, saludos!
Arriba
Nasser09 Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Abril/2017
Localización: México
Estado: Sin conexión
Puntos: 70
Enlace directo a este mensaje Enviado: 06/Marzo/2019 a las 15:34
Buen día Administradores!

Me podrían apoyar cerrar el tema ya que ha quedo solucionado el tema. Muchas gracias a todos los que me apoyaron, saludos.

Anexo el código:
Evento AfterUpdate
Private Sub txtBusqueda_AfterUpdate()
Dim x As String

    If Not IsNull(Me.cmbcampo) Then
        x = "SELECT Titulo"
        x = x & " from TDatos"
        x = x & " WHERE " & Me.cmbcampo & " Like '*" & Me.txtBusqueda & "*' "
        Me.Lista.RowSource = x
    End If
 End Sub

y lo cambie a un boton

Private Sub Comando48_Click()
Dim x As String

    If Not IsNull(Me.cmbcampo) Then
        x = "SELECT Titulo"
        x = x & " from TDatos"
        x = x & " WHERE " & Me.cmbcampo & " Like '*" & Me.txtBusqueda & "*' "
        Me.Lista.RowSource = x
    End If
End Sub

Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable