Array suma de elementos

He creado un method con el siguiente procedimiento:
Tengo un select proveniente de varias tablas y el resultado lo guardo dentro de un array "laA".
En un ListBox con la configuracion siguiente rowsourcetype = 5-array y rowsource = this.Item , hago un DIMENSION thisform.ListBox.Item[alen(laA,1),n] , y ya tengo poblado mi ListBox, en una columna tengo valores numericos que los quiero sumar para desplegar esta suma en un TextBox.
Para sumar la columna con los valores numéricos he dimencinado otro array "laB" así: DIMENSION laB[alen(laA),n], y luego realizo un FOR i = 1 to alen(laA, 1)... Next.
Guardo mi valor en el TextBox asi: thisform.TextBox.Value = ArraySum(@laB)
Hago mi Function asi:
FUNCTION ArraySum(Total)
    LOCAL i, lnRetVal
    lnRetVal = 0
    FOR i = 1 to alen(Total)
    IF TYPE("Total[i,n]") = "N"        && [i,n] representa la columna con los valores
       lnRetVal = lnRetVal +Total[i,n]
    ENDIF
    ENDFOR
    RETURN lnRetVal
endfunc
Problema1: VFP me manda un mensaje de que no permite nested procudure dentro de methods.
He trasladado la función ArraySum hacia un .prg, pero allí me manda un mensaje de error de que no encuentra la variable "Total"
Pregunta: ¿Esta bien mi sintaxis? ¿O qué estoy haciendo mal?
Gracias
Víctor
Respuesta
1
Entendí ... pero no bien...
Si tu problema es que no reconoce la variable total es porque no la estas declarando como un parámetro... intenta esto:
FUNCTION arraysum
       LPARAMETERS Total
...
Endfunc
Y también toma encuenta que estas pasando la variable por referencia; si no te sige funcionando intenta pasarla por valor( no utilizando @)
Te comento, el function esta dentro del método donde tengo a mi select y donde dimensión mi array pero VFP no me permite colocar la esa function dentro del método, lo que hice fue quitar la parte de la función y quedarme con el For... EndFor y así si me trabajo.
Estoy probando con la sugerencia que me mandaste, para lo cual estoy leyendo sobre ese tema para mandar valor ya sea por referencia o por valor para entenderlo mejor.
Gracias y te comentare de mis avances
Víctor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas