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

Resultados extraños

Estas en el tema de Resultados extraños en el foro de ASP Clásico en Foros del Web. Hola, es la primera que vez que escribo ya que estoy empezando con el ASP. Tengo que hacer una página web y una parte del ...
  #1 (permalink)  
Antiguo 26/07/2005, 16:21
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Resultados extraños

Hola, es la primera que vez que escribo ya que estoy empezando con el ASP. Tengo que hacer una página web y una parte del código me da una resultado extraño que no entiendo el por qué. Os explico mi problema: la página web que tengo muestra en pantalla el contenido de una base de datos que contiene los pedidos realizados por un usuario a la empresa. Al lado de cada producto aparece una botón para poder devolverlo. Al hacer click sobre ese boton se ejecuta una función que se encarga de borrarlo. Después se vuelve a mostrar la página sin el producto en la lista. Lo raro es que mi código funciona, sí que se borra el producto, pero el problema está en que siempre se borra el primer producto de la lista, no el que el usuario quiere.

Aquí os muestro mi código, a ver si alguien me puede ayudar:

<tr><th> Nombre </th><th> Artículo </th> <th> Precio </th><th></th></tr>

<% Do Until oRS2.EOF %>
<tr>

<td><%=oRS2("Nombre")%></td>
<td><%=oRS2("Articulo")%></td>
<td><%=oRS2("Precio")%> €</td>
<td><form method="get"><input name="devolver_producto" type="submit" value="Devolver producto " onclick="<%devolver oRS2("Articulo") %>"></form></td>
</tr>
<% oRS2.MoveNext
Loop %>
<tr><td></td><td align="left"><strong>TOTAL </strong></td><td><%=oRS("Total")%> €</td><td></td></tr>


La funcion devolver es la siguiente:

Sub devolver(articulo)
if (Request.QueryString("devolver_producto") <> False ) then
Set oConn = Server.CreateObject ("ADODB.Connection")
oConn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("bdweb.mdb")
SQL="delete * from pedidos where IdUsuario=" & Session("NumSesion") & " AND Articulo='" & articulo & "'"
oConn.Execute(SQL)
oConn.Close
Set oConn = Nothing

Response.Redirect("listacompra.asp")
end if
end sub

¿Cómo puedo hacer que se borre cada producto por separado? Muchas gracias por vuestra ayuda.
Saludos
Alc_user
  #2 (permalink)  
Antiguo 26/07/2005, 16:28
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
¿El campo artículo es un número?¿Estás seguro de que recuperas correctamente el valor de la variable artículo?
__________________
Tu portal de manga y anime.
  #3 (permalink)  
Antiguo 26/07/2005, 17:43
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola meru-kun, el campo Artículo es una cadena de texto. Respecto al paso de la variable creo que sí la paso bien, ya que la variable articulo toma el valor de oRS2("Articulo") aunque no sé porqué, al intentar mostrar por pantalla el valor de articulo, no aparece nada. De todas formas si no pasara bien el valor, no se borraria ni siquiera el primer registro, y como ya digo, funcionar funciona aunque solo se borra el primer registro de la base de datos.


Un saludo
Alc_user
  #4 (permalink)  
Antiguo 27/07/2005, 12:29
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola. ¿Alguien tiene alguna sugerencia para mi problema? No consigo solucionarlo por mucho que le doy vueltas. Gracias



Saludos
Alc_user
  #5 (permalink)  
Antiguo 27/07/2005, 12:56
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Hazle un response.write a tu consulta y pega aqui la salida.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 27/07/2005, 13:11
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años
Puntos: 9
Cita:
Iniciado por Alc_user
<form method="get"><input name="devolver_producto" type="submit" value="Devolver producto " onclick="<%devolver oRS2("Articulo") %>"></form
.....
Sub devolver(articulo)
if (Request.QueryString("devolver_producto") <> False ) then
Set oConn = Server.CreateObject ("ADODB.Connection")
oConn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("bdweb.mdb")
SQL="delete * from pedidos where IdUsuario=" & Session("NumSesion") & " AND Articulo='" & articulo & "'"
oConn.Execute(SQL)
oConn.Close
Set oConn = Nothing
Response.Redirect("listacompra.asp")
end if
end sub
Eso realmente funciona?, es decir, ahí estás intentando llamar un procedimiento desde el evento OnClick no es así?, y otra cosa que me surge la duda, a mi cuando intento llamar un procedimiento que tiene x argumentos, tengo que usar la palabra call, sino me da error, esto es así siempre?.
La verdad, es que no entendí el código ni en lo más mínimo, hay cosas que nunca había visto, ni pensado que se podían hacer. Pero veo que si se puede.
Saludos!.
__________________
Add, never Remove
  #7 (permalink)  
Antiguo 27/07/2005, 21:17
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
y si en todos los casos usas la misma conexión a la BD, sácala de ahí. Encapsular? se llama así?
  #8 (permalink)  
Antiguo 29/07/2005, 06:46
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola a todos. Perdonad que no haya contestado antes pero he tenido problemas con mi conexión a internet. Bueno, yo sigo rompiéndome la cabeza en cómo hacer lo que quiero. Como me sugeríais he intentado mostrar por pantalla el valor de la variable "articulo" pero no me aparece nada. Supongo que será porque no tiene ningún valor. Sin embargo, como os digo, sigue funcionando el código y borrándose siempre el primer registro. ¿Cómo puedo pasarle a la función el nombre de cada uno de los artículos en función del botón sobre el qeu se haga click?

Gracias.
  #9 (permalink)  
Antiguo 01/08/2005, 09:47
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola . Finalmente he decidido cambiar el código un poco y ya casi me funciona aunque de una forma un poco chapucera. Simplemente he creado una variable de sesion que contiene el valor del articulo que se quiere devolver pero sigo teniendo el problema de que siempre se me elimina de la base de datos el último (jeje, ya no es el primero sino el último) de los registros. Mi código continua siendo un bucle que en cada vuelta crea una variable de sesion que almacena el nombre del articulo a devolver pero en cada vuelta el anterior valor se machaca y por eso siempre se borra el último registro.

Mi problema: se basa en que yo, a cada botón "Devolver producto" que se crea en cada uno de las vueltas del bucle do until tengo que asociarle una variable que contenga el nombre de ese producto para poder mandar esa variable a otra página .asp que se encarga de eliminarlo de la base de datos.

Mi pregunta concreta es: ¿cómo puedo pasar a otra página .asp como parámetro esa variable que contiene el nombre del articulo que se quiere borrar y que se corresponde con cada uno de los botones?

He probado a hacer
"funcioneslistacompra.asp?funcion=<%request.QueryS tring("funcion")%>&articulo=<%oRS2("Articulo")%>">
pero no me permite hacer esto: articulo=<%oRS2("Articulo")%>

Ahora lo tengo así, con el problema de que Session("articulo") siempre contiene el valor del último registro.

<%Do Until oRS2.EOF
%>
<tr>
<td><%=oRS2("Nombre")%></td>
<td><%=oRS2("Articulo")%></td>
<td><%=oRS2("Precio")%> &euro;</td>
<%Session("articulo")= oRS2("Articulo")%>
<td><form method="get" action="funcioneslistacompra.asp?funcion=<%request .QueryString("funcion")%>">
<input name="funcion" type="submit" value="Devolver producto">
</form></td>
</tr>
<%
oRS2.MoveNext
Loop%>


Ya estoy desesperado, tengo que entregarlo y no sé como solucionarlo. A ver si alguien me puede ayudar.

Muchas gracias.
Saludos
  #10 (permalink)  
Antiguo 15/02/2006, 16:32
 
Fecha de Ingreso: abril-2003
Mensajes: 4
Antigüedad: 22 años
Puntos: 0
Ya intentaste usar esto: articulo=<%oRS2.Fields.Item("Articulo").Value%>

Yo cada vez que me refiero a un valor uso Recordset.Fields.Item("Campo").Value.

Espero te sirva.
  #11 (permalink)  
Antiguo 15/02/2006, 17:16
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
A ver, quizas lo que diga sera una burrada pero ahi disculpen...la carga de trabajo Gracias a Dios

El evento Onclick es Javascript, la funcion es ASP (creo) ...si es asi, Javascript no puede llamar a una funcion ASP

ademas, una funcion la llamas asi:
devolver oRS2("Articulo")
no seria devolver(oRS2("Articulo")) ???? digo, ando desvelado, no me regañen si no es esto
  #12 (permalink)  
Antiguo 15/02/2006, 17:17
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
yo lo que haria seria que el enlace a borrar sea por ejemplo una que lleve a otra pagina tipo borrar.asp y dodne esta tome el valor del id a borrar y proceda a eliminar el registro
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 21:14.