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

Buscar en una base de datos (E-Commerce)

Estas en el tema de Buscar en una base de datos (E-Commerce) en el foro de ASP Clásico en Foros del Web. Cual es la palabra(s) que ingresas para buscar?...

  #31 (permalink)  
Antiguo 18/02/2003, 15:28
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 4 meses
Puntos: 1
Cual es la palabra(s) que ingresas para buscar?
  #32 (permalink)  
Antiguo 18/02/2003, 15:36
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
asi ponga cacho
o cacho/juan
me tira error
__________________
Juan Pablo
  #33 (permalink)  
Antiguo 18/02/2003, 15:40
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 4 meses
Puntos: 1
pon esto:

Busqueda=Split(Replace(Request.Form("busqueda"),"' ","''")," ")
strsql="SELECT * FROM PRODUCTOS WHERE NOMBRE LIKE '%"&Busqueda(0)&"%' "
If Ubound(Busqueda)>0 Then
For i=1 to Ubound(Busqueda)
strsql=strsql&" OR autor LIKE '%"&Busqueda(i)&"%' "
Next
End If
SET objRS=objConn.Execute(SQL)

y busca

cacho juan

El problema viene cuando solo ingresas una cadena de texto así que has esto

if instr(Request.Form("busqueda")," ") Then
Busqueda=Split(Replace(Request.Form("busqueda"),"' ","''")," ")
strsql="SELECT * FROM PRODUCTOS WHERE NOMBRE LIKE '%"&Busqueda(0)&"%' "
If Ubound(Busqueda)>0 Then
For i=1 to Ubound(Busqueda)
strsql=strsql&" OR autor LIKE '%"&Busqueda(i)&"%' "
Next
End If
Else
strsql="SELECT * FROM PRODUCTOS WHERE NOMBRE LIKE '%"&Request.Form("busqueda")&"%' "
SET objRS=objConn.Execute(SQL)
End if

Saludos
  #34 (permalink)  
Antiguo 18/02/2003, 15:57
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
nop...
sigue el mismo error... mañana seguiré peleando, y seguro volveré a molestarlos.

llevo casi 12 hs en la pc y ya me parezco a este ->
mezclado con este ->

gracias por todo gente...


saludos
__________________
Juan Pablo
  #35 (permalink)  
Antiguo 18/02/2003, 16:04
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 4 meses
Puntos: 1
weno, no se por que presiento que tu caja de texto del formulario no se llama "busqueda"
  #36 (permalink)  
Antiguo 19/02/2003, 05:29
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
hola urjose...

es un mal presentimiento:

<form action = "busquedaprueba3.asp" method= "post">
<b>INGRESE PALABRA CLAVE </b> <input type = "textarea" name="busqueda" cols = 3 rows = 3 ><BR>



saludos
__________________
Juan Pablo
  #37 (permalink)  
Antiguo 19/02/2003, 06:56
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
si la data que recibes es cacho/juan/pedro/....

tu vector deberia quedar referenciado asi

Código:
<%
limpiar=(Replace(Request.Form("busqueda"),"'","''")
vector =Split(limpiar,"/")

response.write ubound(vector)
response.end
%>
  #38 (permalink)  
Antiguo 19/02/2003, 07:17
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
buenasss bakanzipp, mira, en respuesta a tu mensaje anterior, hice algunos cambios, pero no encuentro el error:

Error de Microsoft VBScript en tiempo de ejecución error '800a000d'

No coinciden los tipos

/BIBLIOTECA/busquedaprueba4.asp, line 18



if instr(Request.Form("busqueda"),"/") Then
Busqueda=Split(Replace(Request.Form("busqueda"),"' ","''")," ")
vector = split(Busqueda,"/")
response.write ubound(vector) 'LINEA 18
response.end
strsql="SELECT * FROM PRODUCTOS WHERE NOMBRE LIKE '%"&vector(0)&"%' "

If Ubound(vector)>0 Then
For i=1 to Ubound(vector)
strsql=strsql&" OR autor LIKE '%"&vector(i)&"%' "
Next
End If
Else
strsql="SELECT * FROM publicaciones WHERE NOMBRE LIKE '%"&Request.Form("busqueda")&"%' "
SET objRS=objConn.Execute(strsql)

End if


GRACIAS POR ESA MANO DE SIEMPRE!!
__________________
Juan Pablo
  #39 (permalink)  
Antiguo 19/02/2003, 07:25
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
cambia esto

Código:
if instr(Request.Form("busqueda"),"/") Then
Busqueda=Split(Replace(Request.Form("busqueda"),"'","''")," ")
vector = split(Busqueda,"/")
response.write ubound(vector) 'LINEA 18 
response.end

por esto

Código:
Busqueda=Replace(Request.Form("busqueda"),"'","''")
vector = split(Busqueda,"/")
response.write ubound(vector) 
response.end
  #40 (permalink)  
Antiguo 19/02/2003, 08:13
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
ahora ya no me tira error, pero me muestra solamente el número correspondiente a la palabra que ingreso:
ej. cacho imprime 0
cacho/juan imprime 1
cacho/juan/jose imprime 2

y solamente ese número, sin nada mas, el resto de la pantalla blanca.

ahora estoy metiendole response.write por todos lados para ver hasta donde llega.


saludos
__________________
Juan Pablo
  #41 (permalink)  
Antiguo 19/02/2003, 08:29
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
es ke de seguro estas imprimiendo el indice y no el contenido

despues que creaste el split trata de recorrer tu vector e imprimir su data.

for i=lbound(vector) to ubound(vector)

response.write vector(i) "<br>"

next

response.end
  #42 (permalink)  
Antiguo 19/02/2003, 10:10
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
Creo que ahí debería funcionar, pero me tira el sig error, aunque no encuentro el por qué, me deja mas tranquilo porque no es lo mismo que antes. :

Microsoft JET Database Engine error '80040e14'

Instrucción SQL no válida; se esperaba 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'.

ahí va parte del codigo como quedó:
Busqueda=Replace(Request.Form("busqueda"),"'","''" )
vector = split(Busqueda,"/")
response.write ubound(vector)

for i =1 to lbound(vector)
response.write vector(i) &"<br>"
Response.end
strsql="SELECT * FROM publicaciones WHERE autor = '%"&vector(0)&"%' "
next

For i=1 to Ubound(vector)
strsql=strsql&" OR autor LIKE '%"&vector(i)&"%' "
Next

SET objRS=objConn.Execute(strsql) 'linea en la que me tira el error
'objRS.open strsql, objconn

dim encontrados
encontrados = 0
%><table>

<table bgcolor="<%=colorcelda%>"ALIGN= CENTER WIDTH = 800 >
<tr><td FONT STYLE= VERDANA, ARIAL SIZE=2 align = <%=alineado%>>Autor: <%=objRS("AUTOR")%></FONT></td></tr>
<tr><td FONT STYLE= VERDANA, ARIAL SIZE=2 align = <%=alineado%>>Título: <%=objRS("TITULO")%></FONT></td></tr>
<%
__________________
Juan Pablo
  #43 (permalink)  
Antiguo 19/02/2003, 12:26
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
te da error en esa linea porque no puedes usar el simbolo % junto con el operador =. solo funciona para la clausula like.

like

otra cosa...cuando recorras tu vector hazlo de esta forma

for i=lbound(vector) to ubound(vector)

sigun veo lo estas recorriendo mal

for i =1 to lbound(vector)

esto se traduce a

for i =1 to 0

ya que el lbound es el limite inferior de tu vector y este comienza en 0.
  #44 (permalink)  
Antiguo 19/02/2003, 13:22
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
Parece que vamos a pasar el record de cantidad de páginas.. je.je

ahora no me da el error, pero volví a la pantalla blanca, solo que ahora me muestra

ej: si pongo cacho/juan/armando

muestra:
2cacho

de todas maneras, no llega nunca a buscar en la BD.



no me abandones baka.., no debo estar muy lejos.

gracias.

ah!! : Por las dudas

Busqueda=Replace(Request.Form("busqueda"),"'","''" )
vector = split(Busqueda,"/")
response.write ubound(vector)


for i =lbound(vector) to ubound(vector)
response.write vector(i) &"<br>"

response.end
'strsql="SELECT * FROM publicaciones WHERE autor like '%"&vector(0)&"%' "

next


SET objRS=objConn.Execute(strsql)
'objRS.open strsql, objconn
__________________
Juan Pablo
  #45 (permalink)  
Antiguo 19/02/2003, 13:41
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
jaja..asi veo

kitale el response.end que tienes antes de la consulta sql y descomenta el strsql.
  #46 (permalink)  
Antiguo 19/02/2003, 13:50
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
gracias maistro!!!

funciona!!!!

yo sabía que tan lejos no andaba...

lo que me preocupa es el tema del record,

a ver si con esto lo logramos:

Me busca solo las dos primeras palablas juan/cacho/pirulo

a pirulo no lo encuentra.


Saludos.

de paso: Como anda esa hermosa ciudad?
__________________
Juan Pablo
  #47 (permalink)  
Antiguo 19/02/2003, 13:57
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
hazle un response.write a la variable busqueda y verifica que te traiga los tres nombres

si te trae tres nombre...el vector seria de largo 3 (v(0),v(1),v(2))...

haz tambien un response.write i y fijate cuantas pasadas hace por el for (deberian ser tres)..de paso hace un response.write a vector(i).

de esta ciudad mucho de bonita no tiene...puro smog..autos..y gente...

arranco cada vez ke puedo.
  #48 (permalink)  
Antiguo 19/02/2003, 14:13
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
Es jodido arrancar para algun lado que no tenga esas cosas... por lo menos aca en B.A. no quedan muchos.

Volviendo, cometí un error al decirte que encontraba solamente las dos primeras, ya que la segunda palabra estaba en otro record que contenía también la primera. Osea que me muestra solamente la primer palabra.

por lo que me pediste: para cacho/juan/armando.

el primer vector me muestra 2
el segundo :cacho
juan
armando

Aun tengo fe en el record de páginas.
__________________
Juan Pablo
  #49 (permalink)  
Antiguo 19/02/2003, 14:35
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
bueno, entonces ta todo mal con lo que me dices,

lo que no logro entender es como el split te almacena en el primer registro un 2 y en el siguiente todos los nombre...

lo que deberia hacer es guardarte como elemento separados serian los nombre.

si tienes esto cacho/juan/armando en tu variable busqueda

tu vector deberia quedar
vector(0)=cacho
vector(1)=juan
vector(2)=armando

estas seguro que no hace eso

hazle un response al vector y ve que te forma

Código:
for i =0 to ubound(vector)
response.write vector(i) &"<br>"
next
response.end
despues haz un response.write al strsql que forma al final con la union de todos los nombres.
  #50 (permalink)  
Antiguo 19/02/2003, 15:02
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
mirá:

cuando tipeo el código que me diste, me dice
cacho
armando

luego le puse un response.write strsql y saqué el response.end

y me dá lo siguiente, que creo que puede darnos el error, mira el sql:

cacho
armando
cacho
armando
SELECT * FROM PUBLICACIONES WHERE autor like '%cacho%' OR titulo like '%cacho%' or publicacion like '%cacho%' or fuente like '%cacho%'

por alguna razon no toma el vector 1 y los siguientes
__________________
Juan Pablo
  #51 (permalink)  
Antiguo 19/02/2003, 15:17
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
hice esto:

for i =lbound(vector) to ubound(vector)

strsql="SELECT * FROM PUBLICACIONES WHERE autor like '%"&vector(0)&"%' OR titulo like '%"&vector(0)&"%' or publicacion like '%"&vector(0)&"%' or fuente like '%"&vector(0)&"%'"
response.write "probando las veces que pasa <br>"
next

imprimió esto:
probando las veces que pasa
probando las veces que pasa

osea que está pasando 2 veces, y como la busqueda que le mandé es cacho/juan, esta pasando bien, pero el tema es el sql
¿por qué no reconoce vector(1)?
__________________
Juan Pablo
  #52 (permalink)  
Antiguo 19/02/2003, 15:21
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
debe haber algo raro...
haber copia esto y veamos que sale.

mezclando pesao..



Código:
strsql="SELECT * FROM publicaciones WHERE autor like '%"&vector(0)&"%' "

for i =1 to ubound(vector)
strsql=strsql & " OR autor LIKE '%"&vector(i)&"%' "
next
response.write strsql
response.end
  #53 (permalink)  
Antiguo 19/02/2003, 15:24
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
estas imprimiendo siempre el elemento 0 del vectore...fijate bien

strsql="SELECT * FROM PUBLICACIONES WHERE autor like '%"&vector(0)&"%' OR titulo like '%"&vector(0)&"%' or publicacion like '%"&vector(0)&"%' or fuente like '%"&vector(0)&"%'"

haz lo que te postee y cuenta ke onda.

ufff...anda juntando plata pa' ke kuando vaya a B.A. me sakis a carretear y conocer unas pibas por ahi
  #54 (permalink)  
Antiguo 19/02/2003, 15:30
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
No problem... cuando quieras...

mira esto.... what's up?
esto es lo que me dió:

SELECT * FROM publicaciones WHERE autor like '%cacho%' OR autor LIKE '%cacho%' OR autor LIKE '%armando%'
__________________
Juan Pablo
  #55 (permalink)  
Antiguo 19/02/2003, 15:41
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
el for lo hiciste del el 1?

for i =1 to ubound(vector)
  #56 (permalink)  
Antiguo 19/02/2003, 15:53
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
aura parece querer...
SELECT * FROM publicaciones WHERE autor like '%cacho%' OR autor LIKE '%armando%'

pero como armaria mi sql?


Tenés pensado venir a B.A?
__________________
Juan Pablo
  #57 (permalink)  
Antiguo 19/02/2003, 16:08
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
no se...capaz ke me arranque algun fin de semana...el cambio esta super conveniente por esos lados..

oye tarlipes..

mira no he mirado tu sql y lo que quieres hacer asi que ke te parece si me lo explicas porke como veo quieres preguntar por otros campos de tu tabla..

ahora que esta solucionado el tema el split veamos la formacion del sql...

pero entendiste tus errores cierto...es la idea?.

Pero mañana es otro dia...postealo y te sigo ayudando tomorrow.

10/4.
  #58 (permalink)  
Antiguo 19/02/2003, 16:14
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
avisame si venís... a esta altura ya te considero un amigo.

ahi va:

strsql="SELECT * FROM PUBLICACIONES WHERE autor like '%"&vector(0)&"%' OR titulo like '%"&vector(0)&"%' or publicacion like '%"&vector(0)&"%' or fuente like '%"&vector(0)&"%'"

que deberia poner STRSQL= strsql & " OR autor LIKE...... ?

saludos y ta' mañana
__________________
Juan Pablo
  #59 (permalink)  
Antiguo 20/02/2003, 07:14
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
ke tal.

segun veo lo que quieres hacer es preguntar por varios campos de tu tabla y ademas varias veces, segun lo que tenga el vector?...

hhmmm...nunca he repetido un campo mas de una vez a menos que use el operador IN

where campo IN (a,b,c)

no se si será factible con el operador like.

haz la prueba ejecutando algo asi.

Código:
strsql="SELECT * FROM PUBLICACIONES WHERE autor like '%"&vector(0)&"%' OR titulo like '%"&vector(0)&"%' OR publicacion like '%"&vector(0)&"%' OR fuente like '%"&vector(0)&"%' OR autor like '%"&vector(1)&"%' OR titulo like '%"&vector(1)&"%' OR publicacion like '%"&vector(1)&"%' OR fuente like '%"&vector(1)&"%'"
  #60 (permalink)  
Antiguo 20/02/2003, 07:27
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola man...
ya lo solucioné así mira.



Busqueda=Replace(Request.Form("busqueda"),"'","''" )
vector = split(Busqueda,"/")

strsql="SELECT * FROM publicaciones WHERE autor like '%"&vector(0)&"%' OR titulo LIKE '%"&vector(0)&"%' OR publicacion LIKE '%"&vector(0)&"%' OR fuente LIKE '%"&vector(0)&"%' "

for i =1 to ubound(vector)
strsql=strsql & " OR autor LIKE '%"&vector(i)&"%' OR titulo LIKE '%"&vector(i)&"%' OR publicacion LIKE '%"&vector(i)&"%' OR fuente LIKE '%"&vector(i)&"%' "
next
'response.write strsql


SET objRS=objConn.Execute(strsql)

anda perfecto, hasta 3 palabras busca ej. juan/cacho/armando
si pongo mas de tres, me muestra toda la BD, pero demasiado.

Gracias por tu tiempo y paciencia... y avisá si venis a BA


saludos
__________________
Juan Pablo
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:10.