Autor Tema: [Solucionado] Access search  (Leído 6197 veces)

0 Usuarios y 1 Visitante están viendo este tema.

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
[Solucionado] Access search
« en: Mayo 28, 2011, 01:19:29 pm »
Buenas, tengo un problema al intentar hacer una busqueda de una palabra, por ejemplo si tengo "perro" se me pueden presentar estas situaciones.

utilizo "_" para indicar espacio asi es mas claro

perro_ <-la palabra esta al comienzo del registro y esta precedida de un espacio
_perro_ <-precedida y antecedidad por espacios
,perro_ <-antecedida por signo de puntuacion y esta precedida de un espacio
_perros, <- precedida por espacio pero la palabra completa no coicide esta tiene una s al final

son simplemente algunos ejemplos pueden darse mas casos pero es para dar una idea.
Gracias.
« última modificación: Junio 05, 2011, 03:51:07 am por YvanB »

wolf_kof

  • Visitante
Re:Access search
« Respuesta #1 en: Mayo 28, 2011, 02:38:45 pm »
campo like '%'' & perro & ''%'

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Access search
« Respuesta #2 en: Mayo 28, 2011, 03:08:37 pm »
pero, haciendolo asi, me devuelve cualquier cosa que tenga el fragmento "perro" ej: 123perro1 o me equivoco ?

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Access search
« Respuesta #3 en: Mayo 28, 2011, 03:54:27 pm »
Quieres buscar todas los que tengan perro con los espacios pero no con otras letras??

En todo caso, como deseas el resultado?? que deseas excluir? porque sino podrias usar:

Filtro = "perro "
o'
Filtro = " perro"

campo like '%'' & Filtro & ''%"

de esa forma no te saldrá "123perro1" porque no es igual a "123 perro1"

Sino es asi, deberiamos partir por lo que quieres excluir.
« última modificación: Mayo 28, 2011, 04:11:44 pm por YvanB »
Me encuentras en YAcosta.com

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Access search
« Respuesta #4 en: Mayo 28, 2011, 04:38:23 pm »
YvanB es eso mismo lo que quiero y ahi esta el problema pense en hacer lo que decis pero me paso que con este tipo de filtro

Filtro = "perro "
o'
Filtro = " perro"

me siguen saliendo cosas como perro123 el el caso del 1ro, y 123perro en el caso del segundo y  simplemente "perro" sin espacios ni nada queda excluido.

Lo que quiero buscar por ejemplo es la palabra perro, exactamente como esta escrita y puede o no tener espacios o elementos de puntuacion al principio o al final. Aclaro es solo la palabra perro y no palabras que contengan la secuencia "perro". 

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Access search
« Respuesta #5 en: Mayo 28, 2011, 06:21:29 pm »
En mi BD yo he probado en usar (siguiendo tu ejemplo)  "%perro %" y no me sale "perro123" pero si me sale "perro hambriento" y entiendo que no quieres que salga "perro hambriento" sino solo los que sean "perro".

Pues si es eso, entonces solo queda poner: campo = "perro", ahora no se, se me ocurre que si quiero admitir a
"perro."
"perro "
"perro,"
y unos pocos casos mas, pues no se creo que como los casos son pocos los identifico y envío la consulta con coma, punto, espacio, puntoycoma, no se me ocurre otra forma, porque campo="perro" solo te traerá los "perro" estrictamente, y si estrictamente quieres que te traiga "perro" con 4 o 5 casos mas (punto, coma, espacio...) pues yo mandaría la consulta con esos casos. Ejem
Filtro = "perro"
Campo = Filtro or Campo = Filtro & " " or Campo = Filtro & ","  etc etc.

Si hubiera otra forma a mi también me gustaría saberlo.
Me encuentras en YAcosta.com

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Access search
« Respuesta #6 en: Mayo 28, 2011, 06:30:08 pm »
Aca tengo algo funcional...

 sQuery = "SELECT * FROM Test WHERE Test like '[;,.:! ]perro[;,.:! ]' OR Test like 'perro' OR Test like  'perro[;,.:! ]' OR Test like 'perro[;,.:! ]' "

como se puede apreciar esto esta muuuy lejos de ser elegante, el problema que encontre es que no se como agregar un NULO a la lista de wildcards o hacerla opcional.

algo asi [;,.:! NULL] o  [;,.:! ] OR NULL

no se si se comprende... bueno por ahora sigo buscando.

Gracias por las respuestas!

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Access search
« Respuesta #7 en: Mayo 28, 2011, 06:47:05 pm »
En FB se pueden usar UDFs (Funciones Definidas por el Usuario) en la que se podría hacer mas elegante la consulta, no se si habrá algo similar en tu motor.
Como es que quieres ponerle Null??? no capto. Osea, no creo que exista un campo que contenga perro con null
asi que creo entender que te refieres a que el campo sea null, en ese caso yo usaria el iff con el Isnull y haciéndolo menos elegante aun. iff(isnull(campo), campo, otrodato).  (ojo que en tu motor no sea isnull sino Is Null)
Lo de los corchetes que agrupan condiciones no me funciona a mi de manera natural, veré cual es la alternativa en mi motor.
Me encuentras en YAcosta.com

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Access search
« Respuesta #8 en: Mayo 28, 2011, 07:43:57 pm »
Estoy usando ADO y access.

El tema con los corchetes y el null es asi:

'[,.]perro' <- en este caso .perro y ,perro entran el la condicion pero perro simplemente no porque busca uno de los dos caracteres especificados, es ahi donde entra el NULL que quiero, en este caso tengo ,. y me gustaria agregar un tercer caso que es cuando no hay nada antecediendo a perro. 

No se si se comprende. Si no es asi voy a tratar de ser masclaro con un ejemplo.

wolf_kof

  • Visitante
Re:Access search
« Respuesta #9 en: Mayo 28, 2011, 10:43:48 pm »
bueno lo que necesitas es un poquito de orientacion en cuanto abfiltros

por ejemlo

ado.filter = "campo = '" & perro & "'"
eso te va a dar exactamente el fitro de perro pero solo perro osea que si tienes perro001 y perro solo te va a devolver perro y va a omitir el otro

otro ejemplo

ado.filter ="campo like '" & perro & "%'"

este filtro va a obtener todo lo que cntenga perro y lo que esta desues de eso por ejempo si tienes 1perro01, perro y perro001 obtendras perro y perro001 omitiendo el primero

otro ejemplo

ado.filter = "campo like '%" & perro & "%'"

obtendras todo registro que cojtenga la palabra perro

;)

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Access search
« Respuesta #10 en: Mayo 28, 2011, 10:50:05 pm »
bueno lo que necesitas es un poquito de orientacion en cuanto abfiltros

por ejemlo

ado.filter = "campo = '" & perro & "'"
eso te va a dar exactamente el fitro de perro pero solo perro osea que si tienes perro001 y perro solo te va a devolver perro y va a omitir el otro

otro ejemplo

ado.filter ="campo like '" & perro & "%'"

este filtro va a obtener todo lo que cntenga perro y lo que esta desues de eso por ejempo si tienes 1perro01, perro y perro001 obtendras perro y perro001 omitiendo el primero

otro ejemplo

ado.filter = "campo like '%" & perro & "%'"

obtendras todo registro que cojtenga la palabra perro

;)

Doctor, creo que a Cobein si le queda claro los conceptos sobre el manejo de like. Su tema es aceptar ciertos caracteres pero no todos y excluir el null.

A proposito, te quedan unas horas del dia sabado jejej
« última modificación: Mayo 28, 2011, 10:52:05 pm por YvanB »
Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Access search
« Respuesta #11 en: Mayo 28, 2011, 11:52:31 pm »
ok no habia leido todas las resuestas y yo creo aver escrito q apartir del sabado, no me puedes pedir que el primer dia libre me ocupe de todo verdad

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Access search
« Respuesta #12 en: Mayo 29, 2011, 12:42:47 am »
Se que se va de tema. Pero creo que tendrias que hacer doble analisis. Uno usando like (si haces like 'perro', o es lo mismo que ='perro'?) y ademas analizarlo con Epresiones regulares (u otro metodo como recorrer caracter x caracter) desde la aplicacion.
No hay forma de que los corchetes indique que son condicionales como x ej agregando "?" despues de los mismos?

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Access search
« Respuesta #13 en: Mayo 29, 2011, 02:23:58 am »
ok no habia leido todas las resuestas y yo creo aver escrito q apartir del sabado, no me puedes pedir que el primer dia libre me ocupe de todo verdad

Sorry no me había percatado, pensé que era hasta el sábado y no desde el sábado... jeje si es desde el sábado y no hay fecha limite tienes toda la vida tonses jajaja (broma)
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Access search
« Respuesta #14 en: Mayo 29, 2011, 02:25:47 am »
Cobein, aun me intriga lo del corchete... la verdad no sabia que era posible hacer eso, aun no he investigado esto del corchete pero voy a probarlo, por el momento tengo dudas de que lo de los corchetes funcionen pero si lo has probado con [;,.:! ] tonses vere la forma de replicarlo en mi motor.

Me refiero a esto:
sQuery = "SELECT * FROM Test WHERE Test like '[;,.:! ]perro[;,.:! ]' OR Test like 'perro' OR Test like  'perro[;,.:! ]' OR Test like 'perro[;,.:! ]' "
Me encuentras en YAcosta.com