Tengo un pequeño problema con un código asp;
En si son 2 funciones, una de esas llama a la otra, la cual le paso una variable por referencia.
Bueno el código es esté
Código ASP:
Ver original
<!-- #include file="ArchivoConexion.asp" --> <% call AbrirConexionBD sSQL= "SELECT * FROM tabla WHERE campoclavpri = 1 " variable = GetRatingInfo (sSQL) Function GetRatingInfo(sSQL) Set rs = Conexion.Execute(sSQL) 'Ejecuto consulta que devuelve una fila If Not rs.EOF Then While Not rs.EOF 'Mientras que no termine (al tener 1 fila recorre una única vez) Response.Write "Fields.Count value: " & rs.Fields.Count & "<br/>" For i=0 To rs.Fields.Count -1 'recorro los valores de esa fila tamaarray = Push (arrResult,rs(i)) 'le paso a la funcion push una variable por referencia, y un dato o valor Response.Write "Item "& i & " value: " & rs(i) & "<br/>" Response.Write "arrResult "& i & " value: " & arrResult(i) & "<br/>" ' ACA, DENTRO DEL FOR, EL INDICE 0 DEL ARRAY ANDA response.flush() Next Response.Write "arrResult "& 0 & " value: " & arrResult(0) & "<br/>" ' ACA, FUERA DEL FOR, EL INDICE 0 DEL ARRAY DA ERROR rs.MoveNext Wend End If GetRatingInfo = arrResult End Function Function Push(ByRef mArray, ByVal mValue) ' función que recibe una variable y un valor If IsArray(mArray) Then 'si la variable es una array If isnull(mValue) Then mValue = "NULL" Redim Preserve mArray(UBound(mArray) + 1) ' agrando el array y mArray(UBound(mArray)) = mValue ' le pongo el valor Else ' si la variable no es un array If isnull(mValue) Then mValue = "NULL" mArray = Array(mValue) ' la convierto en array y le pongo el valor (que se asigna a la posicion 0) 'Redim Preserve mArray(0) ' SOLUCIÓN AL ERROR 'mArray(0)= mValue ' SOLUCIÓN AL ERROR End If Push = UBound(mArray) ' devuelvo el tamaño del array (no lo uso) End Function
Esta variable que se modifica por ser pasada por referencia es un array, que se va generando al recorrer un recordset.
A medida que le agrego los elementos voy mostrando en pantalla que el array esta funcionando bien.
El problema surge que cuando termino de asignar todos los datos al array, y intento mostrar la posición 0, me da un error:
error '80020009'
Exception occurred.
La solución alternativa que encontré esta comentada en el código
Que es al código:
mArray = Array(mValue)
agregarle
Redim Preserve mArray(0)
mArray(0)= mValue
Que en si no debería cambiar nada; pero con eso funciona.
Yo creo que el error esta en la creación del array de la forma
mArray = Array(mValue), pero no entiendo como primero funciona y luego no.
Las preguntas son:
1 - ¿Cual es el error?
2 - ¿Porque no me da dentro del FOR?
3 - ¿Porque redimencionar el array a las misma cantidad de elementos soluciona el error?
4 - ¿Quienes somos y de donde venimos?
bueno si alguno sabe estas respuestas (principalmente la 4) le agradecería mucho su respuesta!
saludos!