Buenas a todos
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!