Pasar arrays entre páginas asp

Utilizo parámetros entre páginas asp, hasta ahora pasaba con el tipo de entrada hidden de uno en uno, pero ahora me ha surgido la necesidad de pasar un array entre archivos de asp, ¿Cómo puedo pasar el array?

7 Respuestas

Respuesta
1
Hay varias formas... no sé cual será más común...
Primero:
Hay una función en VBScript que convierte un Array en Una cadena, especificándole un substring que lo dividirá...
La sintaxis es:
Join(lista[, delimitador])
Lista
Requerido. Matriz unidimensional que contiene subcadenas que se van a combinar.
Delimitador
Opcional. Carácter de cadena utilizado para separar las subcadenas en la cadena de retorno. Si se omite, se utiliza el carácter de espacio (" "). Si delimitador es una cadena de longitud cero, todos los elementos de la lista están concatenados sin ningún delimitador.
Ejemplo 1:
Dim MiCadena
Dim MiMatriz(3)
MiMatriz(0) = "Sr."
MiMatriz(1) = "Juan "
MiMatriz(2) = "Pérez "
MiMatriz(3) = "Rodríguez"
MiCadena = Join(MiMatriz) ' MiCadena contiene "Sr. Juan Pérez Rodríguez".
EJEMPLO 2:
Dim MiCadena
Dim MiMatriz(3)
MiMatriz(0) = "1"
MiMatriz(1) = "2"
MiMatriz(2) = "3"
MiMatriz(3) = "4"
MiCadena = Join(MiMatriz, "-") ' MiCadena contiene "1-2-3-4".
Luego, esa cadena la pones en un campo hidden. La función inversa de Join, es Split.
Aquí pongo una explicación de la Función Split
Split(expresión[, delimitador[, número[, comparar]]])
Argumentos
Expresión
Necesario. Expresión de cadena que contiene subcadenas y delimitadores. Si expresión es una cadena de longitud cero, Split devuelve una matriz vacía, es decir, una matriz sin elementos ni datos.
Delimitador
Opcional. Carácter de cadena utilizado para identificar límites de subcadenas. Si se omite, se supone que el carácter de espacio (" ") es el delimitador. Si delimitador es una cadena de longitud cero, se devuelve una matriz de elemento único que contiene la cadena expresión completa.
Número
Opcional. Número de subcadenas que se va a devolver; -1 indica que se devuelven todas las subcadenas.
Comparar
Opcional. Valor numérico que indica el tipo de comparación que se va a utilizar cuando se evalúen subcadenas. Consulte la sección Valores para ver los valores.
----------------------------
La Segunda manera se basa en la utilización de una cualidad de ASP (que no tiene PHP) de tomar variables repetidas en una cadena URL y recibirlas como Array. Suena un poco enredado, pero es lo siguiente...
Supongamos que pasas variables mediante URL (método GET de un formulario) y te queda algo así:
page.asp?ta=1
es un paso normal de variables. Sin embargo si pasas lo siguiente:
page.asp?ta=1&ta=2&ta=3
¿has averiguado lo que pasa?
La página de destino, recibe un arreglo que puedes recorrer así:
For i = 1 To Request.QueryString("ta").Count
Response.Write(Request.QueryString("ta")(i))
Next
Se entiende???
Como técnica para enviar, en la página de origen puedes tener tantos campos hidden como elementos tenga el arreglo:
For k = 0 To Ubound(TuArray)
Response.Write("<input type='hidden' name='ta' value='" & TuArray(k) & "'>")
Next
Como verás esto funcionaría para la forma de envío GET y POST
Me comprendes??? espero ayudar...
cualquier duda preguntame...
Para revisar bien las FUNCIONES que aquí presente, entra a http://cursos.uacj.mx/Guiones/html-vss/vbstoc.htm
Revisa: Funciones
Join
Split
Ubound
Objetos:
Request
Nos vemos...
Respuesta
1
Supongo que el array lo generas en una página asp, y no se modifica en html. En este caso puedes guardarlo en session:
set Session("miArray") = varArray
Otra solución, que mantiene tu forma de trabajar hasta ahora es, suponiendo que el array sea de caracteres, cadenas o números, montar una cadena con los items del array separados por coma:
"Juan","Pepe","Pedro","Maria"
Y lo guardas en un hidden como antes. Cuando recojas el valor de este campo en la siguiente asp aplícale la función "Split", que parte una cadena por un separador que le indicas y la convierte en un array. Ejemplo extraído de la ayuda:
Dim MiCadena, MiMatriz, Msj
MiCadena = "pepe,juan,pedro"
MiMatriz = Split(MiCadena, ",", -1, 1)
' MiMatriz(0) contiene "pepe".
' MiMatriz(1) contiene "juan".
' MiMatriz(2) contiene "pedro"
Msj = MiMatriz(0) & " " & MiMatriz(1)
Msj = Msj & " " & MiMatriz(2)
response.write Msj
Respuesta
1
Tenés 2 alternativas. Si querés respetar la estructura del array, podes crearte una variable de tipo Session, donde lo único que tendrías que hacer es lo siguiente:
Session("miArray") = miVector
Esta alternativa es la más simple, pero no es muy recomendado usar variables de tipo Session, porque sobrecargan al servidor. Todo depende de que tipo de aplicación estés desarrollando (sitio web, sitio para intranet, etc.).
La otra alternativa es un poco más compleja, pero tiene mejor rendimiento. Seguirías usando un campo hidden, donde concatenarías todas las posiciones de tu vector, separadas por un carácter indicador, por ejemplo "valor1|valor2|valor3".
Cuando le das submit al formulario, tomás ese valor (el del campo hidden con la concatenación) y lo ponés en una variable por ejemplo. Una vez allí, podes usar la función split, que recibe un string y un carácter separador. Lo que hace es cortar el string y ponerlo en una posición de un vector cada vez que encuentra el carácter separador.
tuVariable = "valor1|valor2|valor3"
tuVector = split(tuVariable, "|")
Después de esto, tendrías un vector de 3 posiciones, la primera con "valor1", la segunda con "valor2" y la tercera con "valor3".
Respuesta
1
Depende que tan grande es tu Array, hay 3 formas de intercambiar información entre páginas,
1) FORM (Campos de formas ya sea Hidden como los que usas...)
2) Via QueryString (si la informacion no es estrictamente confidencial, a solo q la encriptes)
3) HTTPXML la forma mas rebuscada de todas pero muy eficiente.
Si ya sabes usar las formas mejor sigue usando esta forma, conviene tu array en una cadena de text delimitada por algún separador y la envías en un campo hidden, y en la otra página lo reconviertes a un arrelo para manejarlo fácilmente(en asp no puedes intercambiar arreglos, solo puedes intercambiar tipos básicos de datos... no estructuras de datos)
Espero que sea unidimensional tu arreglo.. sino.. estarás en problemas, pero también aplicaría la misma forma de transportar los datos aun cuando sea multidimensional tu arreglo, mira enviame más específicamente que deseas hacer y te sugeriré una forma más optima de resolverlo, tal vez no sea el como pasar datos la solución...
[email protected]
Y te reenvío una solución más exacta y un ejemplo para que te guíes.
Respuesta
1
No se pueden pasar arrays entre páginas, pero podes usar un truco, aunque es un poco incomodo.
Tienes que crear un form hidden para cada elemento del array y ponerle el mismo nombre a todos los form hidden.
De esta forma podes usar
request.form("parametro")(i)
'de esta forma no estoy muy seguro
o sino
for each elemento in request.form("parametro")
var1=elemento
next
Respuesta
1
Bueno lo del hidden está muy bien, pero siempre se ha de tener en cuenta que es código que cualquier usuario puede ver (es código html), aunque opino que puede sernos muy útil.
Si quieres mover información entre páginas, puedes recurrir al objeto Session.
Se declara e inicializa en el archivo global. Asa (que se encuentra en el raíz de tu aplicación)
Sub Session_OnStart
Session("numero") = ""
End Sub
Sub Session_OnEnd()
Set Session("pedido") = Nothing
End Sub
La variable tiene el valor que le asignes en tus asp's
Session("pedido") = "5"
El valor de Session("pedido") será 5 hasta que tú lo cambies desde el código (Session("pedido")="8")
O en el momento en que se acaba la session:
Cuando se use el método Session. Abandon (no te asustes si alguna vez no te funciona)
O cuando se sale de la aplicación cerrando el navegador.
Vamos al array: Session(Session("pedido")(4))
El elemento 4 del vector pedido.
No sé exactamente qué quieres hacer, pero ahora tienes más información espero que te resulte útil y si tienes más dudas, vuelve a preguntar
Respuesta
1
No se pueden pasar arreglos entre páginas, los arreglos son propios de la página, puedes utilizarlos solo en la página que estas usando...
Te recomiendo tener una tabla tmp en donde insertes los datos y después los consultes...
Saludos y espero poder haberte ayudado en algo
alejandro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas