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

Ordenar campos desde una cadena

Estas en el tema de Ordenar campos desde una cadena en el foro de ASP Clásico en Foros del Web. Estuve probando un código que me pasaron, pero no me está funcionando. Lo que estoy haciendo es enviar a traves de un formulario en un ...
  #1 (permalink)  
Antiguo 06/01/2005, 21:34
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 23 años, 3 meses
Puntos: 0
Ordenar campos desde una cadena

Estuve probando un código que me pasaron, pero no me está funcionando. Lo que estoy haciendo es enviar a traves de un formulario en un textarea varios codigos de productos para que al ejecutar una consulta los ordene ya sea por precio, descripción, etc. Aplico la funcion Split para poner estos codigos separados por comas en una cadena, ya que los códigos los envía con un salto de renglón. Pero finalmente solo me muestra los resultados si en el formulario ingreso un solo código, si ingreso más de un código no me muestra nada, ni me dice que no encontró datos, ni me tira ningun tipo de error.
Les muestro mas abajo como apliqué lo que me pasaron para ver si alguien me puede ayudar a encontrar el error.

Tomo los datos del formulario

<%
Dim orden
orden = Request.Form("orden")
If Request.Form("codigo")<>"" then
Dim cadena
cadena = replace(request.form("codigo"),VBCrLf, ",")
%>


Luego ejecuto la consulta

<%
Dim cn
Dim rsRubro
Dim strSql
strDsn = "yorma"
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 in ('" & cadena & "') Order by ('"& orden &"')"
rsRubro.open strSql , cn
while Not rsRubro.eof
%>


Muestro los datos

<%=rsRubro.fields("Descripcion")%>
<%=rsRubro.fields("Codigointerno")%>

etc.....

y cierro la conexion

<%
rsRubro.movenext
wend
cn.close
Set rsRubro = nothing
Set cn = nothing
else
Response.Write "<h2>No hay datos Disponibles</h2>"

%>


Gracias!!!
  #2 (permalink)  
Antiguo 07/01/2005, 04:34
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 22 años, 2 meses
Puntos: 1
Lo que tendrías que hacer es un Response.write(strSql) para ver como queda la instrucción SQL, y de esa forma poder detectar de donde viene el problema.
  #3 (permalink)  
Antiguo 07/01/2005, 12:15
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 23 años, 3 meses
Puntos: 0
Pregunta

Hola PMP! Gracias por tu respuesta pero la instrucción Sql si introduzco un solo codigo, y elijo el tipo de orden (eso lo manda bien) para buscar, me da como resultado:

"Select IdProducto, Codigo, Codigointerno, Nombre, Descripcion, Medidas, Precio1, Precio2, Imagen, Imagen2, Imagen3, Cantidadxbulto From Producto WHERE Codigointerno in ('y3234') Order by ('precio') ".

En caso de que en el form ponga mas de un codigo directamente no me aparece el resultado de la instrucción Sql. Así que me imagino que el problema está en la cadena que estoy armando, que no lo hace en forma correcta, pero estoy probando algunas variantes y no le encuentro la vuelta.
Si alguien puede ver el error, les agradecería un montón la ayuda.
Saludos, Erika.
  #4 (permalink)  
Antiguo 10/01/2005, 05:47
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 22 años, 2 meses
Puntos: 1
Fijate de hacer el Response.Write solo sin llegar a generar el recordset, para que no se genere el error y de esa forma poder ver como te queda la instrucción SQL.
  #5 (permalink)  
Antiguo 10/01/2005, 17:47
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
Order by ('precio')?

si así también se puede, pido disculpas por la ignorancia, pero no será asi?:
Order by precio

saludos.
  #6 (permalink)  
Antiguo 11/01/2005, 06:48
 
Fecha de Ingreso: enero-2002
Mensajes: 73
Antigüedad: 23 años, 3 meses
Puntos: 0
Buenas, finalmente ya lo pude resolver, por si a alguien le sirve aca dejo el ejemplo.
Saludos y gracias!

Tomo los datos del form

<%
Dim orden
orden = Request.Form("orden")
If orden = "precio" then
If Session("tipocliente") = "A" then
orden = "Precio1"
else orden = "Precio2"
end if
end If
If Request.Form("codigo")<>"" then
Dim palabras
palabras = Split(Request.Form("codigo"),VBCrLf)
%>


Y luego la consulta quedaría asi:

<%
Dim cn
Dim rsRubro
Dim strSql
Dim I
Dim criterio
strDsn = "yorma"
Set cn = Server.CreateObject("ADODB.Connection")
cn.open strDsn
Set rsRubro = Server.CreateObject("ADODB.recordset")
For I = 0 To UBound(palabras)
criterio = "Codigointerno = '" & palabras(I) & "' OR " & criterio
Next
criterio = Left(criterio,(Len(criterio)-4))
strSql = "Select * From Producto WHERE " & criterio & " Order by ("& orden &") ASC"
rsRubro.open strSql , cn
while Not rsRubro.eof
%>
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 15:09.