Saltar navegación

Documentación de FlexPro 2025

Para cada fila...Fin

Repite una serie de instrucciones para todas las filas de un conjunto de datos.

Sintaxis

For Each Row Contador In ConjuntoDeDatos Do

   [Instrucciones]

End

La sintaxis de la instrucción For Each Row...End consta de las siguientes partes:

Parte

Descripción

Contador

Variable que se utiliza como contador de bucles. No es necesario declarar el contador de bucles con Dim.

ConjuntoDeDatos

El conjunto de datos cuyos valores deben contarse. El conjunto de datos no debe ser un valor escalar.

Instrucciones

Una o varias sentencias que se ejecutan para cada valor de ConjuntoDeDatos.

Notas

El bloque For Each Row se ejecuta si hay al menos un valor en ConjuntoDeDatos. En este caso, el programa ejecuta todas las instrucciones del bucle con Contador igual a cero. El bucle se repite para todos los valores del ConjuntoDeDatos, y el Contador va tomando los valores desde cero hasta el número de valores menos uno. A continuación, el programa sale del bucle y continúa la ejecución con la instrucción que sigue a la instrucción End.

Si desea iterar todos los valores de una matriz de datos o una serie de señales, debe incrustar el bucle For Each Row...End en un bucle For Each Column...End, que cuente las columnas. Utilice un nombre de variable único como Contador para cada bucle.

Puede cambiar el valor de Contador dentro de un bucle, pero esto hace más difícil entender y probar el código.

El contador se utiliza a menudo dentro del bucle para indexar un valor del ConjuntoDeDatos.

Nota   En la medida de lo posible, evite los bucles sobre valores individuales de un conjunto de datos. FPScript le ofrece la posibilidad de calcular conjuntos de datos completos en una sola instrucción. Por lo general, los bucles pueden sustituirse por funciones de aislamiento de eventos junto con el operador de índice. El bucle For Each Value...End es el bucle FPScript más rápido.

Disponibilidad

FlexPro View, Basic, Professional, Developer Suite

Ejemplo

El siguiente ejemplo establece todos los valores de una señal que sean superiores a 5.0 en el valor 5.0:

Arguments Signal

For Each Row i In Signal Do

    If Signal.Y[i] >= 5 Then

        Signal.Y[i] = 5

    End

End

Signal

El ejemplo anterior puede escribirse de forma mucho más sencilla y eficiente utilizando el aislamiento de eventos:

Arguments Signal

Signal.Y[ValuesAboveLevel(Signal, 5)] = 5

Signal

Esta variante también puede simplificarse aún más, ya que existe una función Clip incorporada que realiza la operación deseada:

Arguments Signal

Clip(Signal, , 5)

Véase también

Instrucción For Each Column...End

Instrucción For Each Element...End

Instrucción For Each Value...End

Instrucción For...End

Instrucción While...End

Instrucción Do...While