Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   Buscar palabras por separado. (http://www.forosdelweb.com/f15/buscar-palabras-por-separado-105086/)

lexus 29/11/2002 16:07

Buscar palabras por separado.
 
Saludos,

alguien sabe como puedo hacer para que cuando alguien busque una frase en una base de datos no busque exactamente la frase si no que busque cada palabra por separado.

ejemplo

un pajaro azul:
actualmente busca -> "un pajaro azul"

la forma que deseo es:
un pajaro azul:
deberia ser -> "un" "pajaro" "azul"


el sql que uso actualmente es asi:

sql="SELECT * FROM almacenes WHERE palabras_claves LIKE '%" & buscar & "%' ORDER BY establecimiento ASC"


muchas gracias por la colaboracion..

urjose 29/11/2002 16:09

http://forosdelweb.com/showthread.ph...ador+ecommerce

Saludos

lexus 30/11/2002 11:35

no me funciona
 
saludos,

e implementado lo que me diste urjose, pero no me funciona, lo tengo asi..


basedatos = "mp.mdb"
Set con = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
con ="DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;"
con = con & "DBQ=" & server.mappath(basedatos)


nompagina = Request.ServerVariables("SCRIPT_NAME")

If request.form("buscar") <> "" Then
buscar =Split(Replace(Request.Form("buscar"),"'","''"))
End IF
If request.querystring("buscar") <> "" Then
buscar =Split(Replace(Request.querystring("buscar"),"'"," ''"))
End If


SQL="SELECT * FROM musica WHERE INSTR(claves,'"&buscar(0)&"')"
For i=1 to Ubound(buscar)
SQL=SQL&" OR INSTR(claves,'"&buscar(I)&"')"
Next
SET RS=con.Execute(SQL)
rs.PageSize = RegPorPagina
rs.Open sql, con, 3, 3


como podria arreglarlo?

gracias,

urjose 30/11/2002 11:44

Y en que no funciona?

Saludos

lexus 01/12/2002 09:49

Saludos,

me aparece un error queme dice que ,

se requiere un objeto con.

pero como veras ya he definido el objeto con, anteriormente,
en esta linea

basedatos = "mp.mdb"
Set con = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
con ="DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;"
con = con & "DBQ=" & server.mappath(basedatos)


si le quito al codigo tuyo la parte que diice
SET RS=con.Execute(SQL)


me sale este error:
objeto Response, ASP 0106 (0x80020005)
Se encontró un tipo de datos sin especificar.


espero me puedas ayudar, ya que no entiendo que pasa.

gracias

urjose 01/12/2002 18:15

Lo defines pero nunca lo abres

te falta un con.open

y esto esta mal

con ="DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;"
con = con & "DBQ=" & server.mappath(basedatos)

Date una vuelta por www.asptutor.com para que veas comose conecta

Saludos

lexus 01/12/2002 21:28

Hola, no esta mal, ya que es la misma conexion que siempre utilizo siempre me ha funcionado perfectamente,

lo que pasa es que no se como aplicarla con tu codigo, tambien siempre coloco un open..

voy a colocar el codigo que uso siempre, para ver si me puedes dar una mano y ver como seria con el que tu propones..


muchas gracias, espero me puedas colaborar.


<%

Dim basedatos
basedatos = "../cgi-bin/ras/mp2.mdb"
Set con = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
con ="DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;"
con = con & "DBQ=" & server.mappath(basedatos)


Dim sql, buscar

If request.form("buscar") <> "" Then
buscar = request.form("buscar")
End IF
If request.querystring("buscar") <> "" Then
buscar = request.querystring("buscar")
End If



sql="SELECT * FROM musica WHERE claves LIKE '%" & buscar & "%' ORDER BY titulo ASC"
rs.PageSize = RegPorPagina
rs.Open sql, con, 3, 3


%>

espero me puedas colaborar

urjose 01/12/2002 21:41

Insisto, la forma en que usas el con, esta mal

Nunca abres la conexión a la BD


Cita:

Ejemplo1- conexión a una base de datos ACCESS sin declarar DSN

strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("\dirBD\asptutor.mdb")
set conn = Server.Createobject("adodb.connection")
conn.open strconn


Ejemplo1 bis- conexión a una base de datos ACCESS sin declarar DSN usado Jet

strconn = ""Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/dirDb/asptutor.mdb")
set conn = Server.Createobject("adodb.connection")
conn.open strconn



Asptutor.com.

Saludos

lexus 01/12/2002 22:02

Saludos,


la conexion la estoy abriendo justo despues del sql, siempre la he utilizado asi y me funciona, es mas asi como la tengo y como muiestro en el mensaje anterior me funiciona perfectamente, me busca lo que quiero, pero no me separa las frases, alli es donde te pido ayuda, ya que no he podido acoplar el codigo que tu sugieres al mio..

te ruego el favor me ayudes, a repararlo. para qeu me quede buscando las palabras separadas.


gracias

urjose 01/12/2002 22:20

Vuelvo a insistir en que estas mal.

Lo que estas abriendo despues de la sql es el Recordset no el objeto de conexión es por ello que te manda error de que el objeto no existe, en mi codigo lo unico que tienes que cambiar es el nombre de la tabla y el nombre del campo que esta dentro de la función Instr

RENZO 02/12/2002 08:03

Lexus, me parece que esta mal tu codigo, fijate que primero creas un objeto llamado con y despues lo tratas como una variable con= "dbq=..."

lexus 02/12/2002 09:01

Saludos a todos,


al parecer si esta mal el codigo, pero lo mas curioso es que asi lo vengo escribiendo desde hace mas de un año y siempre me ha funcionado perfectamente, nunca me salen mensajes de error y me corre perfectamente,

a que se puede deber esto..
si esta mal escrito no deberia funcionar.. o acaso no es necesario esa linea de codigo?


muchas gracias por las respuesta.


La zona horaria es GMT -6. Ahora son las 07:26.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2014, Jelsoft Enterprises Ltd.

SEO by vBSEO 3.3.2