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
.FormulaAdd (Función)
Añade una fila calculada a una Tabla o control Tabla TreeView proporcionando procedimientos de cálculo personalizados.
Ejemplo
TABLE_MyTable.FormulaDeleteAll()
nRow is int
nRow = TABLE_MyTable.COL_Num.FormulaAdd("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 = TABLE_TableControl.COL_Time.FormulaAdd("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> = <Column>.FormulaAdd(<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.
<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>: Cadena de caracteres
  • 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>: Cadena de caracteres
  • 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.
Componente: wd290obj.dll
Versión mínima requerida
  • Versión 23
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 21/06/2023

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