AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Controles, páginas y ventanas / Funciones Tabla
  • Condiciones para añadir el fila que contiene la fórmula de cálculo personalizada
  • Recalcular los datos
  • Personalización del cálculo fila
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Ver también
  • Funciones de controles Tabla
  • Funciones de gestión de controles Tabla TreeView
  • Cálculos en las columnas de un control Tabla
  • TablaFormulaDeleteAll (Función)
  • Programación de cálculos personalizados en controles Tabla
  • .FormulaAdd (Función)
    TablaFórmulaAñadir (Función)
    Añade una fila calculada a una Tabla o control Tabla TreeView proporcionando procedimientos de cálculo personalizados.
    Ejemplo
    TableFormulaDeleteAll(TABLE_MyTable)
    nRow is int
    nRow = TableFormulaAdd(TABLE_MyTable.COL_Num, "Positive mean", ProcInit, ProcAdd, ProcEnd)
    // Change the background color of the row for custom calculation
    COL_Num[nRow].BackgroundColor = LightRed
     
    nCounter is int
    INTERNAL PROCEDURE ProcInit()
    nCounter = 0
    RESULT 0
    END
     
    INTERNAL PROCEDURE ProcAdd(Accumulator, ColValue)
    // Ignores the negative numbers or NULL
    IF (ColValue <= 0) RESULT Accumulator
    nCounter++
    RESULT Accumulator + ColValue
    END
    INTERNAL PROCEDURE ProcEnd(Accumulator)
    IF nCounter = 0 THEN RESULT 0
    // Calculate the mean
    RESULT Accumulator/nCounter
    END
    nRow2 is int
    nRow2 = TableFormulaAdd(TABLE_TableControl.COL_Time, "Average duration", Null, ...
    AverageDuration_Iteration, AverageDuration_End)
     
    INTERNAL PROCEDURE AverageDuration_Iteration(Accumulator, ColValue)
    RESULT Accumulator + [TAB] + ColValue
    END
     
    INTERNAL PROCEDURE AverageDuration_End(Accumulator)
    nSum is 8-byte int
    nNbValid is int
    FOR EACH STRING sValue OF Accumulator SEPARATED BY TAB
    IF ValidTime(sValue) THEN
    nSum += TimeToInteger(sValue)
    nNbValid++
    END
    END
    RESULT TimeToString(IntegerToTime(nSum/nNbValid), "HH:MM:SS")
    END
    Sintaxis
    <Result> = TableFormulaAdd(<Column> , <Calculation caption> , <Initialization> , <Iteration> , <Ending>)
    <Result>: Integro
    Índice de la fila que contiene la fórmula.
    <Column>: Nombre del control
    Nombre de la columna en la que se añadirá la fórmula.
    Si este parámetro corresponde a una cadena vacía (""), se utilizará la columna a la que pertenece el proceso actual.
    <Calculation caption>: Cadena de caracteres
    Leyenda de la fila adicional donde se visualizará el cálculo.
    Si esta leyenda no existe, se creará la fila.
    Si esta leyenda existe pero no para la columna especificada, el cálculo se visualiza en la fila existente pero para la columna especificada..
    Si esta leyenda existe para la columna especificada, se produce un error de WLanguage.
    <Initialization>: Nombre Procedure o NULL
    • Nombre del lenguaje WL Procedure ("callback") llamado para inicializar la fórmula. Este procedimiento tiene el siguiente formato:
      PROCEDURE <Procedure name> ()
      // your code

      RESULT <Initialization value Accumulator>

      donde <Valor de inicialización Acumulador> es el valor de retorno de la primera iteración del cálculo.
    • NULL si la fórmula no requiere inicialización Process.
    <Iteration>: Nombre Procedure o NULL
    • Nombre del lenguaje WL Procedure ("callback") llamado para cada iteración de la fórmula (cada fila del control Tabla). Esta Procedure tiene acceso de lectura a las columnas de cada fila. Este procedimiento tiene el siguiente formato:
      PROCEDURE <Procedure name>(<Accumulator>, <Column value>)
      // Called for each row in the Table control
      // Your code

      RESULT <New value Accumulator>

      donde:
      • <Accumulador> es el valor que proviene del cálculo anterior (inicialización o iteración previa).
      • <Valor de la columna> es el valor de la columna actual utilizado para calcular esta iteración.
      • <Nuevo valor Acumulador> es el nuevo valor a devolver para la siguiente iteración o al final del cálculo.
    • NULL si la fórmula no requiere iteración Process.
    <Ending>: Cadena de caracteres
    • Nombre de la WLanguage Procedure ("callback") llamada para finalizar la fórmula. Este procedimiento tiene el siguiente formato:
      PROCEDURE <Procedure name>  (<Accumulator>)
      // your code

      RESULT <End value Accumulator>

      donde:
      • <Acumulador> es el valor procedente del cálculo anterior (inicialización o iteración anterior).
      • <Valor final Acumulador> es el valor de retorno que corresponde al valor final del cálculo.
    • NULOSA si la fórmula no requiere un final Process.
    Observaciones

    Condiciones para añadir el fila que contiene la fórmula de cálculo personalizada

    • Si el cálculo denominado <Calculation caption> no existe en el control Tabla, se añade un nuevo cálculo fila debajo del control Tabla (después de los cálculos existentes).
    • Si ya se ha definido un cálculo llamado <Título de cálculo> para otra columna, el cálculo se muestra para la columna especificada en el cálculo existente fila.
    • Si un cálculo llamado <Título del cálculo> ya estaba definido para la misma columna, se produce un error de WLanguage.
    • Sólo se pueden añadir 5 filas de cálculo personalizado.
    Observación: Esta función puede utilizarse:
    • en las columnas de una Tabla o control Tabla TreeView basada en un archivo de datos.
    • en las columnas de una Tabla o control Tabla TreeView rellenada programáticamente.

    Recalcular los datos

    Las líneas de cálculo personalizadas se recalculan automáticamente tan pronto como cambia el contenido del control Tabla.
    Consejo: La iteración Procedure se llama para cada fila: le aconsejamos que no realice cálculos lentos (evite los accesos a la base de datos, por ejemplo).

    Personalización del cálculo fila

    La siguiente sintaxis se utiliza para personalizar el fila añadido (leyenda, Color, fuente, altura, ...):
    <Table control>[Row number].<Property> = <New value>
    donde <Property> puede corresponder a una de las propiedades que se pueden utilizar en una columna de un control Tabla. Para obtener más información, consulte Programación de cálculos personalizados en Table controls.
    Clasificación Lógica de negocio / UI: Código UI
    Componente: wd290obj.dll
    .FormulaAdd (Función)
Versión mínima requerida
  • Versión 22
Esta página también está disponible para…
Comentarios
Cascading calculations
To have cascading values calculated in a table using TableFormulaAdd() the data fill must be "Loaded in memory" otherwise it will not calculate and you will see only zeroes (0) in the calculated column values.
This is not indicated in this help page so, I decided to point it out.
JoeData
17 03 2021

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local