Foros del Web » Programando para Internet » ASP Clásico »

buscador

Estas en el tema de buscador en el foro de ASP Clásico en Foros del Web. Buenas, Queria saber como puedo hacer un buscador porque de la manera q yo lo hago no me funciona bien ya qu si el usuario ...
  #1 (permalink)  
Antiguo 29/01/2008, 02:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
buscador

Buenas,
Queria saber como puedo hacer un buscador porque de la manera q yo lo hago no me funciona bien ya qu si el usuario no completa todos los campos para buscar la busqueda no se realiza bien.
Ej:
campos : Pais Provincia poblacion Nombre
si el pone pais y provincia le encuentra cualquier cosa pero si rellena los 4 campos la busqueda es exacta.
Mi codigo
SQL1="select * from anuncio where Pais like '%" & Paili & "%' and Provincia like '%" & pro & "%' and Poblacion like '%" & pob & "% and Nombre like '%" & nom & "%''"

saludos
  #2 (permalink)  
Antiguo 29/01/2008, 08:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: buscador

Es que no debes de asumir que siempre tendras 4 parámetros. Debes formar el query en razón a los parámetros que recibas, algo como esto:

Código:
Query = "select * from anuncio WHERE "
If Not IsEmpty(Paili) Then 
   Query = Query + "Pais like '%" & Paili & "%' and "
End If
If Not IsEmpty(Pro) Then 
   Query = Query + "Provincia like '%" & Pro & "%' and "
End If
...
etc
...
Query = MID(Query, 1, LEN(Query)-4)
Bueno, la idea es que al final de las consultas solo tengas una instrucción WHERE con exactamente los campos sobre los que le interesa al usuario buscar.

Saludos!
  #3 (permalink)  
Antiguo 29/01/2008, 08:53
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: buscador

Maykire tienes toda la razón en lo que dices pero no crees que el operador "and" hará que la sentencia no funcione, tal y donde está colocada?

Query = "select * from anuncio WHERE "
If Not IsEmpty(Paili) Then
Query = Query + "Pais like '%" & Paili & "%' "
End If
If Not IsEmpty(Pro) Then
Query = Query + "and Provincia like '%" & Pro & "%' "
End If
...
etc
...
Query = MID(Query, 1, LEN(Query)-4)
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 29/01/2008, 10:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

adler probe como me pusiste y me tira este error
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression 'Pais like '%Argentina%' and Provincia like ''.


el codigo
Query = "select * from anuncio WHERE "
If Not IsEmpty(tit) Then
Query = Query + "Pais like '%" & tit & "%' "
End If
If Not IsEmpty(Pro) Then
Query = Query + "and Provincia like '%" & Pro & "%' "
End If

Query = MID(Query, 1, LEN(Query)-4)

ya tambien probe con el q me dijo Myakire. asi no me tirar eror pero el buscador encuentra lo que quiere:D

saludos
  #5 (permalink)  
Antiguo 29/01/2008, 16:42
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: buscador

Cita:
Iniciado por Adler Ver Mensaje
... no crees que el operador "and" hará que la sentencia no funcione, tal y donde está colocada?

... Query = Query + "and Provincia like '%" & Pro & "%' "
...
Query = MID(Query, 1, LEN(Query)-4)
Nop, el and debe ir al final por que no sabemos por cuál condición se irá, así que si se va por una o por las 4 condiciones, siempre tendremos un AND al final y con el MID lo cortamos.


Cita:
ya tambien probe con el q me dijo Myakire. asi no me tirar eror pero el buscador encuentra lo que quiere:D
Me gustaría ver el query resultante tras las concatenaciones. ¿puedes desplegarlo y postearlo?, que para que no funcione necesita estar ingresando a algunas condiciones que no debiera y eso solo es posible si las variables tienen algún valor diferente a cadena vacia (ojo, NULL es diferente a IsEmpty), quizá si cambiaras las condiciones por:

If Len(Trim(tit)) > 0 Then o quizá por if Not isNull(tit) and Not IsEmpty(tit) Then, en fin, eso ya solo puedes tu probarlo con los datos reales que validas.

Saludos
  #6 (permalink)  
Antiguo 30/01/2008, 02:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

pues la verdad probe con muchas cosas pero no puedo hacerlo funcionar. nose que hacer ya.
mi codigo:

tit = request.form("Pais")
pro = request.form("Provincia")
pob = request.form("Poblacion")
sist = request.form("Sistema")


Set oConn = Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\web2\registrate.mdb"
'SQL1="select * from anuncio where Provincia like '%" & pro & "%' and Poblacion like '%" & pob & "%'"


Query = "select * from anuncio WHERE "
If Not IsEmpty(tit) Then
Query = Query + "Pais like '%" & tit & "%' and "
End If
If Not IsEmpty(Pro) Then
Query = Query + "Provincia like '%" & Pro & "%' and "
End If
If Not IsEmpty(pob) Then
Query = Query + "Poblacion like '%" & pob & "%' and "
End If
If Not IsEmpty(sist) Then
Query = Query + "sistema like '%" & sist & "%' and "
End If

Query = MID(Query, 1, LEN(Query)-4)

response.write "font face='Verdana' size='1'>"&rs("Pais")&""
response.write "font face='Verdana' size='1'>"&rs("Provincia")&""
response.write "font face='Verdana' size='1'>"&rs("Poblacion")&""
response.write "font face='Verdana' size='1'>"&rs("sistema")&""


rs.Close
oConn.Close
set rs=nothing
set oConn=nothing

saludos
  #7 (permalink)  
Antiguo 30/01/2008, 07:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: buscador

Cuando Maykire te dice

Cita:
Iniciado por Myakire Ver Mensaje
Me gustaría ver el query resultante tras las concatenaciones. ¿puedes desplegarlo y postearlo?, que para que no funcione necesita estar ingresando a algunas condiciones que no debiera y eso solo es posible si las variables tienen algún valor diferente a cadena vacia
lo que quieres es que hagas

Código HTML:
 tit = request.form("Pais")
pro = request.form("Provincia")
pob = request.form("Poblacion")
sist = request.form("Sistema")


Set oConn = Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\web2\registrate.mdb"
'SQL1="select * from anuncio where Provincia like '%" & pro & "%' and Poblacion like '%" & pob & "%'"


Query = "select * from anuncio WHERE "
If Not IsEmpty(tit) Then
Query = Query + "Pais like '%" & tit & "%' and "
End If
If Not IsEmpty(Pro) Then
Query = Query + "Provincia like '%" & Pro & "%' and "
End If
If Not IsEmpty(pob) Then
Query = Query + "Poblacion like '%" & pob & "%' and "
End If
If Not IsEmpty(sist) Then
Query = Query + "sistema like '%" & sist & "%' and "
End If

Query = MID(Query, 1, LEN(Query)-4)

response.write Query

rs.Close
oConn.Close
set rs=nothing
set oConn=nothing
lo que se te imprima en pantalla, postealo aquí

Cita:
Iniciado por Myakire Ver Mensaje
Nop, el and debe ir al final por que no sabemos por cuál condición se irá, así que si se va por una o por las 4 condiciones, siempre tendremos un AND al final y con el MID lo cortamos.
Ahora lo entiendo
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 30/01/2008, 07:40
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

le agrege la linea esta response.write Query y me salio:
la paguina en blanco con esto
select * from anuncio WHERE Pais like '%España%' and Provincia like '%Barcelona%' and Poblacion like '%San cugat del valles%' and sistema like '%Alquiler%' No se encontraron resultados.
  #9 (permalink)  
Antiguo 30/01/2008, 08:09
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: buscador

La sentencia es correcta, pero podrías probarla dejando algún campo vacío.

No se encontraron resultados
¿Estás seguro que en la tabla anuncio hay algún registro en el que el campo y el contenido de dicho campo sea este?
Id_registro >> 1; Pais >> España; Provincia >> Barcelona; Poblacion >> San cugat del valles; sistema >> Alquiler
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 30/01/2008, 08:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

si tengo eso aparte probe solamente poniendo en pais españa y los demas lo deje en blanco y me aparece lo mismo
  #11 (permalink)  
Antiguo 30/01/2008, 08:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

jeje ya esta lo q pasa q tenia una cosa mal. ahora me salen resultados pero no son del td exacto porque por ejemplo pongo nada mas en poblacion una y no me sale y si pongo otro nombre me sale.verifique de que este en la bd y si que esta.
  #12 (permalink)  
Antiguo 30/01/2008, 08:38
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

ya esta no me funcionaba bien xq se ve q una coluima de la bd relacionado a lo que buscaba estaba en blanco y eso pejudicaba.
Muchas gracias
  #13 (permalink)  
Antiguo 30/01/2008, 08:58
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

una ultima preugntra a la query se le pueden dar varios nombre query1 y 2. lo digo xq toy usando el select case y are vario tipo de busqueda.
  #14 (permalink)  
Antiguo 30/01/2008, 09:05
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

mm nose si me explique bien en la busqueda tengo 3 opciones de precio
1)<15000
2)15000-25000
3)>25000
y por eso uso select case pero claro tengo q hacer 3 tipos de busqueda diferente y por eso quiero ponerle nombres difernte a la query para diferencias a la hora de que se ejecute en cada uno de los casos.

Query = "select * from anuncio WHERE "
If Not IsEmpty(tit) Then
Query = Query + "Pais like '%" & tit & "%' and "
End If
If Not IsEmpty(Pro) Then
Query = Query + "Provincia like '%" & Pro & "%' and "
End If
If Not IsEmpty(pob) Then
Query = Query + "Poblacion like '%" & pob & "%' and "
End If
If Not IsEmpty(tipt) Then
Query = Query + "Tipoterreno like '%" & tipt & "%' and "
End If
If Not IsEmpty(tipv) Then
Query = Query + "TipoVivienda like '%" & tipv & "%' and "
End If
If Not IsEmpty(sist) Then
Query = Query + "sistema like '%" & sist & "%' and "
End If
If Not IsEmpty(supe) Then
Query = Query + "Metros like '%" & supe & "%' and "
End If
If Not IsEmpty(rangos) Then
Query = Query + "Precio between 0 and 15000 and "
End If


Query = "select * from anuncio WHERE "
If Not IsEmpty(tit) Then
Query = Query + "Pais like '%" & tit & "%' and "
End If
If Not IsEmpty(Pro) Then
Query = Query + "Provincia like '%" & Pro & "%' and "
End If
If Not IsEmpty(pob) Then
Query = Query + "Poblacion like '%" & pob & "%' and "
End If
If Not IsEmpty(tipt) Then
Query = Query + "Tipoterreno like '%" & tipt & "%' and "
End If
If Not IsEmpty(tipv) Then
Query = Query + "TipoVivienda like '%" & tipv & "%' and "
End If
If Not IsEmpty(sist) Then
Query = Query + "sistema like '%" & sist & "%' and "
End If
If Not IsEmpty(supe) Then
Query = Query + "Metros like '%" & supe & "%' and "
End If
If Not IsEmpty(rangos) Then
Query = Query + "Precio between 15000 and 25000 and "
End If


Query = "select * from anuncio WHERE "
If Not IsEmpty(tit) Then
Query = Query + "Pais like '%" & tit & "%' and "
End If
If Not IsEmpty(Pro) Then
Query = Query + "Provincia like '%" & Pro & "%' and "
End If
If Not IsEmpty(pob) Then
Query = Query + "Poblacion like '%" & pob & "%' and "
End If
If Not IsEmpty(tipt) Then
Query = Query + "Tipoterreno like '%" & tipt & "%' and "
End If
If Not IsEmpty(tipv) Then
Query = Query + "TipoVivienda like '%" & tipv & "%' and "
End If
If Not IsEmpty(sist) Then
Query = Query + "sistema like '%" & sist & "%' and "
End If
If Not IsEmpty(supe) Then
Query = Query + "Metros like '%" & supe & "%' and "
End If
If Not IsEmpty(rangos) Then
Query = Query + "Precio >= 25000 and "
End If
  #15 (permalink)  
Antiguo 30/01/2008, 09:47
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: buscador

ya esta gente lo arregle muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:58.