Foros del Web » Programando para Internet » ASPX (.net) »

Array de sesión adentro de For Next - ayuda

Estas en el tema de Array de sesión adentro de For Next - ayuda en el foro de ASPX (.net) en Foros del Web. Hola a todos; Tengo un problema que es el siguiente: ........ cmd = New OleDbDataAdapter(s, cnn) ' ' Llenar el DataTable dt = New DataTable ...
  #1 (permalink)  
Antiguo 21/02/2010, 18:16
 
Fecha de Ingreso: abril-2007
Mensajes: 71
Antigüedad: 17 años
Puntos: 0
Array de sesión adentro de For Next - ayuda

Hola a todos;
Tengo un problema que es el siguiente:
........
cmd = New OleDbDataAdapter(s, cnn)
'
' Llenar el DataTable
dt = New DataTable
cmd.Fill(dt)
'
n = dt.Rows.Count
'intento cargar en sesi¢n
'cmd.Fill(dt, "email")
Dim arrString(dt.Rows.Count - 1) AsString
Dim iCnt AsInteger
For iCnt = 0 To dt.Rows.Count - 1
arrString(iCnt) = dt.Rows(iCnt)(
"email")
Response.Write(arrString(iCnt)) ' funciona a la perfección
Session.Item("arr") = arrString(iCnt)
Response.Write(Session(
"arr") & "<br>") ' fuinciona
Next

Response.Write(
">>>" & Session.Item("arr").ToString() & "OHH") ' ***

***: No funciona afuera del For Next, solo coloca el último valor de la base de datos.

¿Tienen alguna idea de como hacer que la variable sesión agarre realmente todos los valores adentro del For Next y los pueda utilizar afuera en otro lado de la página?

Muchas gracias.
__________________
Zona Hosting - Hosting Windows y Linux - Registros de dominios.
  #2 (permalink)  
Antiguo 22/02/2010, 12:21
 
Fecha de Ingreso: abril-2007
Mensajes: 71
Antigüedad: 17 años
Puntos: 0
Respuesta: Array de sesión adentro de For Next - ayuda

ayudaa please!
__________________
Zona Hosting - Hosting Windows y Linux - Registros de dominios.
  #3 (permalink)  
Antiguo 22/02/2010, 17:42
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 3 meses
Puntos: 4
Respuesta: Array de sesión adentro de For Next - ayuda

Uso C#, aunque en escencia debe ser lo mismo que VB...

En C# para asignar una session puedes simplemente hacerlo asi:

Session["NuevaSession"] = "nuevo valor";

Ahora... tengo una duda sobre tu código...

porqué dentro del for next usas:

Cita:
Iniciado por razeus Ver Mensaje

Response.Write(Session("arr") ...
y fuera del for usas:

Cita:
Iniciado por razeus Ver Mensaje

Response.Write(Session.Item("arr")...
  #4 (permalink)  
Antiguo 23/02/2010, 07:38
 
Fecha de Ingreso: abril-2007
Mensajes: 71
Antigüedad: 17 años
Puntos: 0
Mensaje Respuesta: Array de sesión adentro de For Next - ayuda

Gracias Osvier;
El tema más raro es que fuera del For Next, se pierde completamente la variable sesión o digamos que pierde el índice ya que la sesión afuera del ForNext solo me muestra el último valor del registro.

¿Alguna idea porque sucede esto?

Sobre "Response.Write(Session.Item("arr")..." fue un experimento ya que según leí habría que hacer una matriz, pero algo no estoy haciendo bien y no se bien además porque funciona adentro del For Next; pero afuera la sesión solo toma el último valor.

Gracias por cualquier ayuda en esto que me está sacando el sueño.
__________________
Zona Hosting - Hosting Windows y Linux - Registros de dominios.
  #5 (permalink)  
Antiguo 24/02/2010, 14:34
 
Fecha de Ingreso: abril-2007
Mensajes: 71
Antigüedad: 17 años
Puntos: 0
Respuesta: Array de sesión adentro de For Next - ayuda

¿Alguna sugerencia? Gracias...
__________________
Zona Hosting - Hosting Windows y Linux - Registros de dominios.
  #6 (permalink)  
Antiguo 24/02/2010, 18:01
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 3 meses
Puntos: 4
Respuesta: Array de sesión adentro de For Next - ayuda

si cambias esta linea:

Cita:
Iniciado por razeus Ver Mensaje
Response.Write(">>>" & Session.Item("arr").ToString() & "OHH") ' ***
Por esto:

Código VB:
Ver original
  1. Response.Write(">>>" & Session("arr") & "OHH") ' ***

no te funciona???
  #7 (permalink)  
Antiguo 25/02/2010, 05:04
 
Fecha de Ingreso: abril-2007
Mensajes: 71
Antigüedad: 17 años
Puntos: 0
Mensaje Respuesta: Array de sesión adentro de For Next - ayuda

Cita:
Iniciado por osvier Ver Mensaje
si cambias esta linea:



Por esto:

Código VB:
Ver original
  1. Response.Write(">>>" & Session("arr") & "OHH") ' ***

no te funciona???

No, no me funciona de ninguna forma. Lo que intriga mucho es porque se pierde la sesión al salir del For Next, lo he intentado de todas las formas posibles y creo que hay algo raro con las sesiones creadas adentro del For Next

MIl gracias por cualquier ayuda...
__________________
Zona Hosting - Hosting Windows y Linux - Registros de dominios.
  #8 (permalink)  
Antiguo 25/02/2010, 11:48
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 3 meses
Puntos: 4
Respuesta: Array de sesión adentro de For Next - ayuda

Debuguealo:

1. pon un breakpoint antes de que inicie el for (menu Debug>New Breakpoint>Break at function)
2. corre la aplicacion en debug mode
3. en modo de ejecucion, la aplicacion entrara en modo de "paso a paso" desde el breakpoint.

abre una ventana watch..
Ya que estas en modo de "paso a paso": menu Debug>Windows>Watch>Watch#
En la ventnaa de Watch, agrega una nueva entrada con:

Session.Count

Despues. debuguea el for paso a paso (con F10 avanzas un paso) el cursor ira iterando por toda la ejecucion del for, mientras hace eso, checa (en el watch) que la Session.Count este aumentando...

Tambien puedes agregar Session(0) o cualquier otro valor que quieras ver...

de este modo puedes saber exactamente en que linea te esta borrando la variable o session..

espero eso te ayude..
  #9 (permalink)  
Antiguo 25/02/2010, 14:15
 
Fecha de Ingreso: abril-2007
Mensajes: 71
Antigüedad: 17 años
Puntos: 0
Mensaje Respuesta: Array de sesión adentro de For Next - ayuda

Gracias, hace un rato atrás me pude dar cuenta del ¿Por qué? afuera del For next se perdía la sesión, es casi obvia la respuesta esto de debío a que las sesiones de forma recursiva se sobre escriben solo quedando la última sesión como válida ya que tienen el mismo nombre.

Ahora bien sigo en la lucha de este interesante problema, si bien me di cuenta del problema inicial ahora hay uno más grande.

Tengo:

For i = 0 To n - 1
Dim sNombre AsString
sNombre = dt.Rows(i).Item("Nombre")
objMail.Body =
"Estimado Sr. " & sNombre & "OK"
Next

Esto hace traer todos los nombres de la base de datos y mi idea es colocarlos para que dinamicamente el objMail.Body cambie pero no lo hace porque se queda con el último valor de i = n-1; pero no funciona.

¿Cómo podría hacer que objMail.Body sea dependiente de i y así poder desplegar de forma recursiva todos los valores?

objMail.Body.(i) no funciona ya que no es la forma, acepto cualquier idea que me puedan pasar si anidar un if o lo que sea ya que ahora el problema es hacer que objMail.Body sea variable en función de i.

GRACIAS!!!
__________________
Zona Hosting - Hosting Windows y Linux - Registros de dominios.
  #10 (permalink)  
Antiguo 26/02/2010, 01:27
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 3 meses
Puntos: 4
Respuesta: Array de sesión adentro de For Next - ayuda

Perdon, no lei bien tu problema... estaba en la idea que QUERIAS guardar el ultimo dato... y que cuando decias no funcionaba era porque la session estaba vacia o algo parecido..

en fin...

sobre tu problema creo que puedes usar un array... pero no se la sintaxis en VB... pero, no entiendo una cosa, porque no ejecutas, lo que quieras ejecutar, dentro del for? por el nombre de tu objeto parece que es para enviar correos.... porque no pones tu codigo para enviar el correo dentro del for?
  #11 (permalink)  
Antiguo 26/02/2010, 20:39
 
Fecha de Ingreso: abril-2007
Mensajes: 71
Antigüedad: 17 años
Puntos: 0
Mensaje Respuesta: Array de sesión adentro de For Next - ayuda

Hola,
El código es el siguiente, creo que hay un problem a de lógica en el mismo:
..........
cmd.Fill(dt)
'
n = dt.Rows.Count
Dim arrString(dt.Rows.Count - 1) AsString

mail.From = New MailAddress([email protected], "De prueba")

For iCnt AsInteger = 0 To 1

Dim toa AsNew MailAddress(dt.Rows(iCnt).Item("email"))
mail.To.Add(toa)
mail.Subject = "Este es un mensaje de correo"
mail.Body = "this is the body content of the email." & dt.Rows(iCnt).Item("Nombre")
mail.IsBodyHtml = 1 'si
'send the message
Dim smtp AsNew SmtpClient("mail.midominio.com")
smtp.Credentials = New NetworkCredential([email protected], "xxxx")
smtp.Send(mail)
Next
mt
Objetivo: Esto debería enviar correos a que email listado en una base de datos, y además cambiar el cuerpo del mensaje personalizandolo según el email de la base de datos con el nombre correspondiente.

Error: El for next, actúa como una suma en este caso, ya que si es por ejemplo:

i=0 to i=2 entonces,
i=0
(i=1) >> i=0,1 >>> Problema van 2 correos a: 0,1 (debería llegar el correo a i=1 y no también a i=0)
(i=2)>> i=0,1,2 >>> Problema van 3 correos a: 0,1,2 (debería llegar el correo solo a i=2 y a nadie mas)

El error es que el bucle hace que se repitan los emails un i número de veces, sumandose a los anteriores...

Esto me tiene desconcertado, gracias por cualquier ayuda.
__________________
Zona Hosting - Hosting Windows y Linux - Registros de dominios.

Última edición por razeus; 26/02/2010 a las 20:40 Razón: update

Etiquetas: .net, sesión
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 04:29.