Pasar arrays entre formularios ASP

Callaghan
20 de Enero del 2006
Hola, necesito pasar un array de datos de un formulario a otro con asp y vbscript y no se como hacerlo.

por ejemplo tengo definido un array
dim ejemplo(4)

en ejemplo1.asp le doy valores
ejemplo(0) = 1
ejemplo(3) = 2
y luego llamo a ejemplo2.asp con post
como recogo en ejemplo2.asp los valores del array ejemplo??

Mi idea era hacer un select multiple oculto con todas las opciones seleccionadas de manera que la primera opcion correspondiera a ejemplo(0) la segunda a ejemplo(1), etc... pero tiene que existir algo mucho mas facil y que no soy capaz de encontrar.

Cristianriv
20 de Enero del 2006
Puedes crear una variable de tipo Session, en la cual guardas todos los valores del array.

Puedes crear la variable de tipo
Session["ValoresVector"]; a la cual le asignas dentro de un ciclo de repeticin todos los valores del array, luego al agregar los valores concatenas con el siguiente, me atrevo a decir; aunque no conosca mucho de VBscript porque yo trabajo con C#, pero e de suponer que la logica es la misma, concatenas de la siguiente forma:

...
for i=0; i<=ejemplo(3); i++
Session["ValoresVector"] += ejemplo(3)+","
...
Aunque no estoy seguro de como se expresa o si as se expresa en la sintasis de VBScript, pero de lo que estoy seguro es que funcionara si lo haces bien y aplicas la logica debida. La explicacin es simple, las variables de tipo Session se mantienen durante toda la aplicacin, as que no tendras problemas en utilizar la variable con el temor de perder los datos en cualquier otra pagina, hay un inconveniente si los valores son de tipo numericos conviertelos a string, esto es porque luego de que los tengas en la variable Session, fijate al final que lo concateno con la "," (coma) esto lo hago porque donde necesites los datos, puedes hacer un Split (este metodo, en C# permite separar valores reconociendo un parametro en este caso la ","). Ahora en la pagina donde necesites los datos debes crear un vector de tipo char el cual tiene el parametro en este caso: "," eso es lo unico que le asignas al vector, creas otro vector al cual le asignaras los valores, que con el metodo Split ya estaran separados. El metodo Split comparte dos parametros: el vector de tipo char y el tamao del vector al cual asignaras los valores dentro de la variable Session. Ojo no debes poner en este parametro el nombre del vector, solo su tamao.

Metodo Split: En C# es:
...
miVector = Session["ValoresVector"].ToString().Split(vectorChar[1],20);
...
Esta sintaxis es de C#, ahora bien no son muy cambiantes la sintaxis de C# y VBscript, Explicacin:

miVector, es el vector que he creado de tipo string con un tamao de 20 al que le asigno los valores de la Session, separandolos con el metodo Split en el cual involucro como parametros el vector de tipo char que contiene en esa posicin el parametro por el cual Split identificara donde separar los valores y por ultimo el tamao del vector al que le guardare los valores, notese que no se incluye el tamao en el vector o sea:

...
miVector[20] = Session["ValoresVector"].ToString().Split(vectorChar[1],20);
...

Esto no esta bien, porque el tamao se define dentro del metodo Split.

Espero que te sirva de algo y te ayude mucho, si tienes dudas no dudes en escribirme o agregame a tu MSN, [email protected]

Adios y ojala te sirva de algo, que estes muy bien y suerte!!

Callaghan
20 de Enero del 2006
Hola, muchas gracias por la rapidez en contestar.
La verdad es que no me gusta mucho usar variables de session si no las voy a usar en todas las paginas (nombre de usuario, pais, etc...)
Lo que yo queria era usar una especie de input hidden multiple.
Creo que he encontrado una solucion que me podria valer.

ejemplo1.asp

dim ejemplo(5)

ejemplo(0)=4
ejemplo(1)=8
ejemplo(2)=15
ejemplo(3)=16
ejemplo(4)=23
ejemplo(5)=42

cargo los datos del array en campos hidden todos con el mismo nombre
for i=0 to Ubound(ejemplo,1)
<input type="hidden" name="hdnejemplo" value="<%=ejemplo(i)%>">
next
Pasamos a ejemplo2.asp

ejemplo2.asp

dim numeroschungos

numeroschungos= Request.form( "hdnejemplo" )
numeroschungos= Split( numeroschungos, ",")

de esta forma nos quedaria
numeroschungos(0)=4
numeroschungos(1)=8
numeroschungos(2)=15
numeroschungos(3)=16
numeroschungos(4)=23
numeroschungos(5)=42

Esta solucion funciona bien.
El unico problema que tiene es que al hacer el Split te guarda un espacio al principio
en el ejemplo
numeroschungos(4)=" 23"
En VBScript yo lo que he hecho es recorrer el array con un trim, que elimina los espacios

PD: Que nadie utilice estos numeros para jugar a la loteria.....