Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2004, 15:19
Avatar de u_goldman
u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Problema con sesión

Hola chicos, a ver quien me da una mano porque llevo todo el día con esto y no lo he podido resolver....

Estoy implementando un carrito de compras por medio de un Diccionario de Datos metido en una sesión, hasta ahí todo bien, cree una Sub para actualizar dicho carrito, la cual funciona bien con la salvedad de que si no tiene nada el diccionario después de actualizar el carrito, no está destruyendo la sesión, con lo cual me está metiendo en problemas a la hora de evaluar si existe el objeto session("MyObjCart")...

Sub UpdateFakeCart(product_id, qty)
sbnCountElements = 0
'Response.Write "ID= " & product_id & ", Qty= " & qty
'Response.End
Set MyObjCart = session("MyObjCart")
If MyObjCart.Exists(product_id) Then
If qty < 1 Then
MyObjCart.Remove(product_id)
Else
MyObjCart(product_id) = qty
End If
End If
Set session("MyObjCart") = MyObjCart
For each element in session("MyObjCart")
sbnCountElements = sbnCountElements + 1
Next
'****Si entra al If, pero no destruye la sesión
If sbnCountElements <= 0 Then
'Response.Write sbnCountElements
Set session("MyObjCart") = nothing
'Response.End
End If
End Sub

'Fragmento de llamado a la Sub
UpdateFakeCart cint(product_id), cint(qty)
Response.Redirect "index.asp?type=cart&action=page"

'Después de ejecutar esto, redirecciona aquí
<%
If NOT IsObject(session("MyObjCart")) Then
%>
<center><font face= arial size=3><b>No tienes productos en tu carrito de compras.</b></center>
<%
Else
'Pinta el carrito por medio de otras sub
End If
%>

El problema reside precisamente en que no se por qué diablos no destruye el objeto y por lo tanto llama a las sub para pintar el carrito, provocando errores procedurales...

Alguna idea antes de aventarme por la ventana?

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway