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

Consulta con varias palabras clave

Estas en el tema de Consulta con varias palabras clave en el foro de ASP Clásico en Foros del Web. Hola, estuve buscando en los temas anteriores y no encontre la solucion a mi duda. Necesito hacer una consulta en la cual a traves de ...
  #1 (permalink)  
Antiguo 27/12/2004, 13:30
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 23 años, 3 meses
Puntos: 0
Pregunta Consulta con varias palabras clave

Hola, estuve buscando en los temas anteriores y no encontre la solucion a mi duda.
Necesito hacer una consulta en la cual a traves de un formulario con un textarea se pueda ingresar en cada linea un codigo (que es el codigo de producto de mi base de datos) y que me muestre como resultado el detalle de los productos de los codigos ingresados. Estuve probando con el "like" pero no me encuentra ningun resultado ya que busca toda la cadena ingresada en el textarea. Para que me puedan entender mejor en este link http://www.mktoys.com hay un textarea debajo de donde dice "Item No." donde se ingresan los numeros de codigo de productos y devuelve una lista con los productos ingresados. ¿Como puedo hacer para que al recibir los datos del formulario, pueda ingresarlos en una consulta para que solo me muestre los codigos ingresados?
Muchas gracias por la ayuda.
  #2 (permalink)  
Antiguo 27/12/2004, 16:51
Avatar de Maxon  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey NL
Mensajes: 263
Antigüedad: 23 años, 4 meses
Puntos: 0
<select name="productos">
<%
Do While not RS.eof%>
<option><%=RS("producto")%>
<%RS.movenext
Loop
%>
</select>
  #3 (permalink)  
Antiguo 28/12/2004, 10:28
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
Lo que puedes hacer también es utilizar la función Split para separar las palabras y hacer un bucle con las palabras.

<%
'separas las palabras cada vez que hay un espacio en blanco
palabras = Split(Request.Form("textarea")," ")

'Haces un bucle para crear el criterio de búsqueda
'Utilizas "AND" para indicar que busque todas las palbras
'O sino, utilizas "OR" para que busque una u otra

For I = 0 To UBound(palabras)
criterio = "nombreDelCampo = '" & palabras(I) & "' AND "
Next

'Luego, eliminas la última parte de la cadena "criterio"
' para evitar ese " AND " del final que quedará suelto
criterio = Left(criterio,(Len(criterio)-5))
'en caso de haber utilizado "OR" en vez de "AND"
'deberás colocar 4 en vez de 5

'ahora haces la consulta
SQL = "SELECT * FROM tabla WHERE " & criterio & " ORDER by campo ASC"
%>

No estoy segura si era eso lo que querías, es decir, efectuar una búsqueda de ese tipo. Si era eso, el ejemplo te servirá seguro.

Saludos!!!
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar

Última edición por TurKa; 28/12/2004 a las 10:32
  #4 (permalink)  
Antiguo 28/12/2004, 10:30
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 22 años, 3 meses
Puntos: 4
Perdona, me euivoqué en algo y es en el Split...
No debes separar por "espacios" las palabras, sino por "saltos de líneas" ya que se escribirá uno en por línea. Es decir, que el split deberá quedar así:

palabras = Split(Request.Form("textarea"),chr(10))

Ahora sip!! Perdón!!!
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #5 (permalink)  
Antiguo 28/12/2004, 13:18
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 23 años, 3 meses
Puntos: 0
De acuerdo Muchas gracias!

Turca te agradezco mucho por tu ayuda, utilicé finalmente la función Split y pude generar la consulta sin problemas.
Dejo más abajo un detalle del codigo que usé por si a alguien le es útil.

Recogo los datos del formulario
<%
If Request.Form("codigo")<>"" then
Dim cod
cod = Split(request.form("codigo"),VBCrLf)
%>


Luego hago la conexion a la base de datos y comienzo a tomar los datos del array para la consulta.
<% For i = LBound(cod) To UBound(cod)
Dim cadena
cadena = (cod(i))
Set cn = Server.CreateObject("ADODB.Connection")
cn.open strDsn
Set rsRubro = Server.CreateObject("ADODB.recordset")
strSql = "Select IdProducto, Codigo, Codigointerno, Nombre, Descripcion, Medidas, Precio1, Precio2, Imagen, Imagen2, Imagen3, Cantidadxbulto From Producto WHERE Codigointerno = '" & cadena & "' "
rsRubro.open strSql , cn
while Not rsRubro.eof
%>


Muestro los datos que necesito de la consulta y me muevo al siguiente registro pedido hasta terminar de leer el array, y luego cierro la conexion.
<%
rsRubro.movenext
wend
cn.close
Set rsRubro = nothing
Set cn = nothing
next
%>


Saludos y Gracias!!
  #6 (permalink)  
Antiguo 02/02/2005, 17:35
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola:
he probado el último ejemplo de erika y no me funciona, cambié VBCrLf) de esta linea
cod = Split(request.form("codigo"),VBCrLf) por esto " ") que posteó turka y funciona, pero escribe registros dobles.
ejemplo, en el form se escriben dos palabras ( juego sucio ) y si hay un registo que tiene estas dos palabras, lo pone dos veces.

Yo quisiera utilizar esto para buscar las palabras que se escriban en el form estén o no en ese orden, pero que no repita registros,

se puede? como?

gracias
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
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 16:44.