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

Almacenar un vector en Application!!!

Estas en el tema de Almacenar un vector en Application!!! en el foro de ASP Clásico en Foros del Web. Tengo un error Type mismatch en la linea que intento ingresar el vector almacenado en la variable Application a un vector local asi: usuarios=Application("usuarios") yo ...

  #1 (permalink)  
Antiguo 24/04/2009, 08:25
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Exclamación Almacenar un vector en Application!!!

Tengo un error Type mismatch en la linea que intento ingresar el vector almacenado en la variable Application a un vector local asi:

usuarios=Application("usuarios")

yo he declarado la variable usuarios arriba asi:
Dim usuarios()

No le hago Redim porque no sabría cual es el tamaño del vector en application para cualquier momento.

Que hago?!!!!
  #2 (permalink)  
Antiguo 24/04/2009, 11:10
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Respuesta: Almacenar un vector en Application!!!

pero primero podrias preguntar si en realidad es un vector
Código ASP:
Ver original
  1. if IsArray(Application("usuarios")) then
digo esto... como algo para comprobacion... para saber si en realidad tienes un arreglo, y no simplemente un dato, ya que no creas el redim como mencionas
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 24/04/2009, 11:38
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
De acuerdo Respuesta: Almacenar un vector en Application!!!

Cita:
Iniciado por Shiryu_Libra Ver Mensaje
pero primero podrias preguntar si en realidad es un vector
Código ASP:
Ver original
  1. if IsArray(Application("usuarios")) then
digo esto... como algo para comprobacion... para saber si en realidad tienes un arreglo, y no simplemente un dato, ya que no creas el redim como mencionas


Buen punto, lo hare y les cuento. Pero...asumiendo de que se trate de un vector...que otra cosa podría estar sucediendo? o..si no fuese un vector, y aunque como ven, arriba lo declare como tal, que podría hacer para que se guardase como uno. Gracias!

Última edición por jotamarios; 24/04/2009 a las 11:44
  #4 (permalink)  
Antiguo 24/04/2009, 11:47
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

Otra alternativa siendo que estás de antemano tomando valores del global.asa, es decir que defines un arreglo en dicho archivo, sería que en lugar de un arreglo, hicieras una cadena separada por algún identificador y después la convirtieras en arreglo mediante la función split.

Código asp:
Ver original
  1. 'global.asa
  2. Application("usuarios") = "1;2;3;4;5"
  3.  
  4. 'archivo.asp
  5. arrUsuarios = split(Application("usuarios"), ";")

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 24/04/2009, 11:52
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

A esta ultima idea le veria el inconveniente de tener que hacer el proceso cada vez que un usuario ingresa a la aplicación, porque cabe aclarar que se trata de la página de inicio, y que la idea es guardar en aquel vector, los identificadores (email) de los usuarios, para poder saber quién esta conectado en un momento dado.
  #6 (permalink)  
Antiguo 24/04/2009, 12:00
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

Hola de nuevo, si te entendí bien, el proceso sería el mismo solo que en lugar de agregar un índice arreglo por cada usuario que entre a la aplicación, agregarías dicho identificador a una cadena, esto se maneja en el global.asa, me imagino que ya tienes algún método para hacerlo, la solución planteada es más la manera de recuperar dichos valores.

Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 24/04/2009, 12:15
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Independientemente de si es en Global Asa o en mi página ASP que autentica los usuarios. El proceso es:
Un vector vacio, una variable tipo vector en Application con los emails de usuarios con sesión activa. El vector vacio recibe el vector de Application, le agrega el usuario que ha solicitado ingresar al sistema, y luego se vuelve a almacenar en Application("usuarios"). No se trata de cadenas concatenadas sino de un vector. Gracias! :D
  #8 (permalink)  
Antiguo 24/04/2009, 12:23
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

Ando lento, no entiendo, suerte
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 24/04/2009, 12:34
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

jajajaja, bueno lo voy a poner con detalle así:

-El archivo ASP es ingreso.asp. Este logea a un usuario.

Ahora, intento almacenar los nombres de usuario que para mi aplicación son los email. ¿Porque?...para poder determinar si alguien intenta abrir sesión con un usuario ya autenticado.

-¿Como lo intento hacer?. Almacenandolos en una variable Application que se llama Application("usuarios"). Esta se trata de un vector.

-El inconveniente es: Para ir agregando al usuario que pide la página, lo saco del Application("usuarios") en un vector "temporal"(dado que muere cuando la página responde), que luego se va a almacenar y reemplazar en Application("usuarios")...espero ser claro :S

Depronto mi problema tambien sea que no se como agregar valores a la variable contenida en el objeto application (no se si se pueda, creo q no).

Gracias!!
  #10 (permalink)  
Antiguo 24/04/2009, 12:42
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Almacenar un vector en Application!!!

Independientemente de que puedes hacerlo como u_goldman dice en lugar de usar vectores, también haciendo de lado eso de que quieres usar innecesariamente una variable adicional a la Application donde ya tienes los correos, ¿por qué no los asignas uno por uno y listo?
Código asp:
Ver original
  1. vector = Array("1@1", "2@2", "3@3", "4@4")
  2.  
  3. Dim variable()
  4. Redim variable(UBound(vector))
  5.  
  6. For i=LBound(variable) to UBound(Variable)
  7.     variable(i) = vector(i)
  8. Next
  #11 (permalink)  
Antiguo 24/04/2009, 13:03
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Almacenar un vector en Application!!!

http://www.forosdelweb.com/f15/matriz-session-481056/
  #12 (permalink)  
Antiguo 24/04/2009, 13:11
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Le he hecho un par de pruebas y estoy mas confundido aun :D

Borre el contenido de Application("usuarios") asignandole null.
Luego entre y el guarda lo que le digo, pero no lo ve como un array(use isarray(applcation("usuarios")). Y cuando intenta asignarle la variable de application("usuarios") a un vector me sale este error:
"

estoy en el else
contenido de application:
dad

Microsoft VBScript runtime error '800a000d'

Type mismatch
"
Lo que escribe es por este codigo:

dim shopper_email,shopper_password,uno
dim usuarios()

'Email
shopper_email = Request("shopper_email")

Application.Unlock


'Application("usuarios")=null
If Not IsArray(Application("usuarios"))Then
Response.Redirect("prueba.asp")
End If
If IsNull(Application("usuarios")) Then
ReDim usuarios(1)
usuarios(0)=shopper_email
Application("usuarios")=usuarios
Response.Write("<br>contenido de application:<br>"&Application("usuarios")(0))
Else
Response.Write("<br>estoy en el else")
Response.Write("<br>contenido de application:<br>"&Application("usuarios")(0))
Redim usuarios(1)
usuarios=Application("usuarios")
Response.Redirect("prueba.asp")
'Response.Write("<br>Ahora el valor de usuario es:"&Application("usuarios")(0))
End If
Application.Lock

Alguien que vea el error?? Gracias!
  #13 (permalink)  
Antiguo 24/04/2009, 13:15
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Como puedo obligarlo a que sea array????
  #14 (permalink)  
Antiguo 24/04/2009, 13:34
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

Esto me funciona...

Código asp:
Ver original
  1. <script language="vbscript" runat="server">  
  2. sub application_onstart
  3.     Application.Lock
  4.     'App Vars
  5.     Application("val") = null
  6.     Application.Unlock
  7. end sub
  8. </script>


Código asp:
Ver original
  1. <&#37;
  2. Sub IteraArreglo(arr)
  3.     if isArray(arr) then
  4.         for i = 0 to uBound(arr)
  5.             Response.Write("Indice " & i & ": " & arr(i) & "<br />")
  6.         next
  7.         Response.Write("<hr/>")
  8.     else
  9.         Response.Write("Este no es un arreglo")
  10.         Response.Write("<hr/>")
  11.     end if
  12. End Sub
  13.  
  14. Application("val") = null
  15. IteraArreglo(Application("val"))
  16.  
  17. '---------------
  18. Dim arr(1)
  19. arr(0) = 1
  20. arr(1) = 2
  21.  
  22. Application("val") = arr
  23. call IteraArreglo(Application("val"))
  24. '-----------------------------
  25.  
  26. '------------------------------
  27. Dim otroArreglo
  28. Dim cadena
  29. cadena = "1;2;3;4;5;6;7;8;9;10"
  30. otroArreglo = split(cadena, ";")
  31.  
  32. Application("val") = otroArreglo
  33.  
  34. call IteraArreglo(Application("val"))
  35. '----------------------------------
  36. %>

A ver si te ayuda en tu búsqueda


Salud!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #15 (permalink)  
Antiguo 24/04/2009, 15:42
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Pues esta ultima no era mi intensión, porque me toca convertirlo en vector cada vez que lo revise, pero como que me tocara :( ...se los agradezco mucho a todos, que comunidad tan cool. Saludos,
  #16 (permalink)  
Antiguo 24/04/2009, 15:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Almacenar un vector en Application!!!

No he revisado la solución de u_golmand a profundidad, pero si te ofrece usar una cadena en lugar de un vector, solo puesta el correo con el InStr en lugar de iterarlo.

Igual sobre las propuestas de pasar casi por casilla en lugar de hacer una asignación directa para evitar el error de Type mismatch ¿qué haz pensado?
  #17 (permalink)  
Antiguo 24/04/2009, 15:55
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

En realidad no es tanto como una solución porque no le entendí mucho al problema lo que traté fué de asignar un arreglo a una variable de aplicación para después iterarlo, el arreglo creado a partir de diferentes métodos.

Salud chicos!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #18 (permalink)  
Antiguo 24/04/2009, 15:56
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Segun lo que he leido e intentado, no se puede hacer asignacion directa...desfortunadamente
  #19 (permalink)  
Antiguo 24/04/2009, 16:01
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

Cita:
Iniciado por jotamarios Ver Mensaje
Segun lo que he leido e intentado, no se puede hacer asignacion directa...desfortunadamente
Siguiendo con nuestro ejemplo, creo un arreglo, lo asigno a la variable de aplicacion creo una variable y le asigno el arreglo que esta contenido en la variable de aplicacion:

Código asp:
Ver original
  1. '------------------------------
  2. Dim otroArreglo
  3. Dim cadena
  4. cadena = "1;2;3;4;5;6;7;8;9;10"
  5. otroArreglo = split(cadena, ";")
  6.  
  7. Application("val") = otroArreglo
  8. unArregloMas = Application("val")
  9.  
  10. call IteraArreglo(unArregloMas)
  11. '----------------------------------

¿Qué me estoy perdiendo que no entiendo?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #20 (permalink)  
Antiguo 24/04/2009, 16:39
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Almacenar un vector en Application!!!

última vez que pregunto

Cita:
Igual sobre las propuestas de pasar casi por casilla en lugar de hacer una asignación directa para evitar el error de Type mismatch ¿qué haz pensado?
  #21 (permalink)  
Antiguo 27/04/2009, 08:59
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Cita:
Iniciado por Myakire Ver Mensaje
última vez que pregunto



Realmente (si entiendo bien se trata de recorrer la cadena y agregarla a un vector con split?¿) tendría que recorrer cada vez todos los usuarios conectados al sistema cuando un nuevo usuario entre(dado que mi solucion es para determinar que NO este YA conectado), esto haría demasiado lento el proceso y podría denegarle el servicio.
  #22 (permalink)  
Antiguo 27/04/2009, 13:20
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Almacenar un vector en Application!!!

Cita:
Iniciado por jotamarios Ver Mensaje
Realmente (si entiendo bien se trata de recorrer la cadena y agregarla a un vector con split?¿) tendría que recorrer cada vez todos los usuarios conectados al sistema cuando un nuevo usuario entre(dado que mi solucion es para determinar que NO este YA conectado), esto haría demasiado lento el proceso y podría denegarle el servicio.

Claro que no, eso de recorrerlos uno por uno es simple y sencillamente para no hacer la asignación directa, que como ya vimos tal parece no se puede. Pero es trabajando vectores igual como lo haces ahora.

Cita:
Iniciado por Myakire Ver Mensaje
Cita:
Tengo un error Type mismatch en la linea que intento ingresar el vector almacenado en la variable Application a un vector local asi: ....
...¿por qué no los asignas uno por uno y listo?
Código asp:
Ver original
  1. vector = Array("1@1", "2@2", "3@3", "4@4")
  2.  
  3. Dim variable()
  4. Redim variable(UBound(vector))
  5.  
  6. For i=LBound(variable) to UBound(Variable)
  7.     variable(i) = vector(i)
  8. Next
  #23 (permalink)  
Antiguo 27/04/2009, 13:34
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Cita:
Iniciado por Myakire Ver Mensaje
Claro que no, eso de recorrerlos uno por uno es simple y sencillamente para no hacer la asignación directa, que como ya vimos tal parece no se puede. Pero es trabajando vectores igual como lo haces ahora.
El problema aqui es q esto lo unico que hace es copiar el contenido de un vector, en otro. Mi problema es que no lo puedo asignar a la variable application
  #24 (permalink)  
Antiguo 27/04/2009, 13:51
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

Si entendi bien, esto lo deberia solucionar, si no, de que menos me divertí un rato, vamos, un poco de creatividad

Código asp:
Ver original
  1. <!--#include file = "adodb.asp"-->
  2. <&#37;
  3. 'Estos son nuestros usuarios conectados
  4.  
  5. Response.Write(Application("val") & "<br />")
  6.  
  7. 'Nuevo email
  8.  
  9. 'Creamos un arreglo para iterar con los emails que ya tenemos
  10. arr = split(arrString, ",")
  11.  
  12. 'Vamos a crear un recordset desconectado para agregar mejor los emails y hacer el filtrado
  13. Set rs = Server.CreateObject("ADODB.Recordset")
  14.  
  15. 'Creamos el recordset desconectado
  16. with rs
  17.     .ActiveConnection = Nothing
  18.     .LockType = 3
  19.     with .Fields
  20.         .Append "email", adBSTR, 300
  21.     end with
  22.     .Open
  23. end with
  24.  
  25. 'Llenamos el recordset
  26. for i = 0 to uBound(arr)
  27.     rs.AddNew "email", arr(i)
  28. next
  29. 'Filtramos
  30. rs.Filter = "email="&email
  31.  
  32. 'Si el email no existe, entonces lo agregamos a nuestra variable de aplicacion
  33. if rs.RecordCount = 0 then
  34.     if len(Application("val")) > 0 then
  35.         Application("val") = Application("val") & ","
  36.     end if
  37.     Application("val") = Application("val") & email
  38. end if
  39.  
  40. 'Este es nuestro nuevo valor
  41. Response.Write(Application("val"))
  42. %>

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #25 (permalink)  
Antiguo 27/04/2009, 13:58
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Muchas gracias por las respuestas, me decidi por guardarlo como cadena separada por comas y utilizarlo como un vector que le hace un split a la cadena aquella. Gracias a todos!
  #26 (permalink)  
Antiguo 27/04/2009, 14:15
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Respuesta: Almacenar un vector en Application!!!

¿Y si usás un InStr() para verificar si ya existe el nuevo email en Application("val")?
Digo, si InStr vale cero, significa que no está y por lo tanto se concatena.
__________________
...___...
  #27 (permalink)  
Antiguo 27/04/2009, 14:33
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Almacenar un vector en Application!!!

Cita:
Iniciado por Al Zuwaga Ver Mensaje
¿Y si usás un InStr() para verificar si ya existe el nuevo email en Application("val")?
Digo, si InStr vale cero, significa que no está y por lo tanto se concatena.
Tenías que llegar tarde a dar con la solución
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #28 (permalink)  
Antiguo 27/04/2009, 14:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Respuesta: Almacenar un vector en Application!!!

Jo, debo decir que cuando comencé a escribir el anterior mensaje no estaba el de jotamarios en donde decía que ya lo solucionó. También aclarar que no leí todo el mensaje. Recién lo hago y la solución del instr la propuso Myakire hace 3 días:

Cita:
Iniciado por Myakire Ver Mensaje
No he revisado la solución de u_golmand a profundidad, pero si te ofrece usar una cadena en lugar de un vector, solo puesta el correo con el InStr en lugar de iterarlo.
(aunque no le entiendo qué quiso decir con lo que yo marqué en rojo )
__________________
...___...
  #29 (permalink)  
Antiguo 27/04/2009, 15:47
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Almacenar un vector en Application!!!

Se llama dislexia o disgrafía

quise decir "... solo busca el correo con el InStr ..."

Pero este usuario según me pareció, como que no leía las respuestas, o por lo menos no las razonaba, por eso se tardó tanto en solucionar su problema.
  #30 (permalink)  
Antiguo 28/04/2009, 06:53
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar un vector en Application!!!

Bueno, fijense que lo del instr funcionaría pero...imaginemonos la siguiente situación:
Un usuario se logea en la aplicación y olvida cerrar sesión. La sesión caduca y cuando vuelve a entrar tiene que logearse; dado que mi página de logeo verifica que no se haya autenticado ya buscando en la cadena de los usuarios, lo va a encontrar como logeado porque nunca se retiro su email del objeto application y por lo tanto no podrá volverse a logear, o por lo menos hasta q se destruya dicho objeto. ¿Que solución se le podría dar a esto? porque yo tenia planeado sacarlo del objeto en cuanto presionara logout.
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 12:43.