sql

08/07/2003 - 22:17 por alex | Informe spam
hola.
tengo un textbox para que el usuario pueda buscar un
producto en una tabla de Access con una consulta como
esta:

"SELECT * FROM tabla WHERE producto LIKE '*" & Text1.Text
& "*'"

y muestra los resultados en un flexgrid.

el problema es que si, por ejemplo, el usuario escribe

'tarjeta red'

no me mostrará los que son

'trajeta DE red'

y lo que quiero es que se pueda buscar al estilo de los
buscadores de Internet, que si pones dos (o más) palabras
te muestra los que contienen esas palabras aunque no
esten juntas y no solo lo que es igual a lo escrito.
¿No existe una instruccion SQL en lugar del LIKE para
hacerlo de manera sencilla?
bueno, no se si me explico...
pero de todas formas Muchas Gracias.
Alex

Preguntas similare

Leer las respuestas

#1 Diego
08/07/2003 - 23:05 | Informe spam
Prueba esto:

a = "tarjeta red"
b = Split(a, " ")
sql = ""
For i = 0 To UBound(b)
sql = sql & "producto like '*" & b(i) & "*'" & " or "
Next
sql = "select * from tabla where (" & Left(sql, Len(sql) - Len(" or "))
& ")"



"alex" escribió en el mensaje
news:04b601c3458d$f7e8a4b0$
hola.
tengo un textbox para que el usuario pueda buscar un
producto en una tabla de Access con una consulta como
esta:

"SELECT * FROM tabla WHERE producto LIKE '*" & Text1.Text
& "*'"

y muestra los resultados en un flexgrid.

el problema es que si, por ejemplo, el usuario escribe

'tarjeta red'

no me mostrará los que son

'trajeta DE red'

y lo que quiero es que se pueda buscar al estilo de los
buscadores de Internet, que si pones dos (o más) palabras
te muestra los que contienen esas palabras aunque no
esten juntas y no solo lo que es igual a lo escrito.
¿No existe una instruccion SQL en lugar del LIKE para
hacerlo de manera sencilla?
bueno, no se si me explico...
pero de todas formas Muchas Gracias.
Alex
Respuesta Responder a este mensaje
#2 Victor Koch
08/07/2003 - 23:05 | Informe spam
Podrias separar las palabras del texto que te ingresa el cliente y hacer:

"SELECT * FROM tabla WHERE producto LIKE '*tarjeta*' AND producto LIKE
'*red*'"

Un saludo, Víctor Koch.


"alex" escribió en el mensaje
news:04b601c3458d$f7e8a4b0$
hola.
tengo un textbox para que el usuario pueda buscar un
producto en una tabla de Access con una consulta como
esta:

"SELECT * FROM tabla WHERE producto LIKE '*" & Text1.Text
& "*'"

y muestra los resultados en un flexgrid.

el problema es que si, por ejemplo, el usuario escribe

'tarjeta red'

no me mostrará los que son

'trajeta DE red'

y lo que quiero es que se pueda buscar al estilo de los
buscadores de Internet, que si pones dos (o más) palabras
te muestra los que contienen esas palabras aunque no
esten juntas y no solo lo que es igual a lo escrito.
¿No existe una instruccion SQL en lugar del LIKE para
hacerlo de manera sencilla?
bueno, no se si me explico...
pero de todas formas Muchas Gracias.
Alex
Respuesta Responder a este mensaje
#3 Ulises Soso
08/07/2003 - 23:19 | Informe spam
prova de la siguiente manera:

"SELECT * FROM tabla WHERE ucase(producto) LIKE '*" & ucase(Text1.Text ) &
"*'"


"alex" escribió en el mensaje
news:04b601c3458d$f7e8a4b0$
hola.
tengo un textbox para que el usuario pueda buscar un
producto en una tabla de Access con una consulta como
esta:

"SELECT * FROM tabla WHERE producto LIKE '*" & Text1.Text
& "*'"

y muestra los resultados en un flexgrid.

el problema es que si, por ejemplo, el usuario escribe

'tarjeta red'

no me mostrará los que son

'trajeta DE red'

y lo que quiero es que se pueda buscar al estilo de los
buscadores de Internet, que si pones dos (o más) palabras
te muestra los que contienen esas palabras aunque no
esten juntas y no solo lo que es igual a lo escrito.
¿No existe una instruccion SQL en lugar del LIKE para
hacerlo de manera sencilla?
bueno, no se si me explico...
pero de todas formas Muchas Gracias.
Alex
Respuesta Responder a este mensaje
#4 alex
09/07/2003 - 00:40 | Informe spam
Muchas gracias Victor, Diego y Ulises por la respuesta
pero en el codigo de Diego el problema es que tambien me
saca los que contienen solo una de las palabras, osea que
en el ejemplo de que el usuario introduzca 'tarjeta red'
tambien da como resultados tarjeta de video, tarjeta de
sonido...

en cuanto a la respuesta de victor, supongo que te
refieres a que vaya comprobando caracter por carater por
si es un espacio e ir guardando las palabras en variables
etc, etc... no? pues la verdad es que habia pensado en
algo asi, pero me gustaria saber si hay otra forma mas
sencilla de hacerlo...

Tambien he probado lo de Ulises pero el resultado es el
mismo: si se pone 'tarjeta red' no me saca los que
son 'tarjeta DE red'

por si no me he explicado bien, pondré otro ejemplo de lo
que quiero que haga:
si el usuario introduce 'samsung disco duro' le salgan
todos los discos duros de la marca samsung aunque en la
tabla aparezcan de la siguiente manera:

productos
samsung disco duro 40 Gb
disco duro 40 Gb samsung
samsung 40 Gb. Disco duro
...Etc...

gracias de nuevo
alex




prova de la siguiente manera:

"SELECT * FROM tabla WHERE ucase(producto) LIKE '*" &


ucase(Text1.Text ) &
"*'"


"alex" escribió en el mensaje
news:04b601c3458d$f7e8a4b0$
hola.
tengo un textbox para que el usuario pueda buscar un
producto en una tabla de Access con una consulta como
esta:

"SELECT * FROM tabla WHERE producto LIKE '*" & Text1.Text
& "*'"

y muestra los resultados en un flexgrid.

el problema es que si, por ejemplo, el usuario escribe

'tarjeta red'

no me mostrará los que son

'trajeta DE red'

y lo que quiero es que se pueda buscar al estilo de los
buscadores de Internet, que si pones dos (o más) palabras
te muestra los que contienen esas palabras aunque no
esten juntas y no solo lo que es igual a lo escrito.
¿No existe una instruccion SQL en lugar del LIKE para
hacerlo de manera sencilla?
bueno, no se si me explico...
pero de todas formas Muchas Gracias.
Alex


.

Respuesta Responder a este mensaje
#5 Leonardo Azpurua
09/07/2003 - 02:49 | Informe spam
"alex" escribió en el mensaje
news:076601c345a1$fb3bfe50$
... en el codigo de Diego el problema es que tambien me
saca los que contienen solo una de las palabras, osea que
en el ejemplo de que el usuario introduzca 'tarjeta red'
tambien da como resultados tarjeta de video, tarjeta de
sonido...

en cuanto a la respuesta de victor, supongo que te
refieres a que vaya comprobando caracter por carater por
si es un espacio e ir guardando las palabras en variables
etc, etc... no? pues la verdad es que habia pensado en
algo asi, pero me gustaria saber si hay otra forma mas
sencilla de hacerlo...


Alex:

Al final, la respuesta de Diego y la de Victor hacen esencialmente lo mismo.

Lo único que tienes que hacer es reemplazar los "or" en el código de Diego
por "and", como en el c´digo de Víctor, y listo.

El único problema es que si el usuario escribe "red tarjeta" tambien
aparecerán los que tienen "tarjeta de red" (y "edredones bordados con
figuras de tarjetas") :-)

Salud!
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida