DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Champs, pages et fenêtres / Fonctions Table
  • Conditions d'ajout de la ligne contenant la formule de calcul personnalisée
  • Recalcul des données
  • Personnalisation de la ligne de calculs
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Ajoute une ligne calculée dans un champ Table (ou Table hiérarchique) en fournissant des procédures de calculs personnalisées.
Exemple
TableFormuleSupprimeTout(TABLE_MaTable)
nLigne est entier
nLigne = TableFormuleAjoute(TABLE_MaTable.COL_Num, "Moyenne positive", ProcInit, ProcAjout, ProcFin)
// Changement de la couleur de fond de la ligne du calcul personnalisé
COL_Num[nLigne].CouleurFond = RougeClair
 
nCompteur est entier
PROCÉDURE INTERNE ProcInit()
nCompteur = 0
RENVOYER 0
FIN
 
PROCÉDURE INTERNE ProcAjout(Accumulateur, ValeurCol)
// Ignore les négatifs ou NULL
SI (ValeurCol <= 0) RENVOYER Accumulateur
nCompteur++
RENVOYER Accumulateur + ValeurCol
FIN
PROCÉDURE INTERNE ProcFin(Accumulateur)
SI nCompteur = 0 ALORS RENVOYER 0
// Calcul de la moyenne
RENVOYER  Accumulateur/nCompteur
FIN
nLigne2 est entier
nLigne2 = TableFormuleAjoute(TABLE_ChampTable.COL_Heure, "Durée moyenne", Null, ...
DuréeMoyenne_Itération, DuréeMoyenne_Fin)
 
PROCÉDURE INTERNE DuréeMoyenne_Itération(Accumulateur, ValeurCol)
RENVOYER Accumulateur + [TAB] + ValeurCol
FIN
 
PROCÉDURE INTERNE DuréeMoyenne_Fin(Accumulateur)
nSomme est un entier sur 8
nNbValides est un entier
POUR TOUTE CHAÎNE sValeur DE Accumulateur SÉPARÉE PAR TAB
SI HeureValide(sValeur) ALORS
nSomme += HeureVersEntier(sValeur)
nNbValides++
FIN
FIN
RENVOYER HeureVersChaîne(EntierVersHeure(nSomme/nNbValides), "HH:MM:SS")
FIN
Syntaxe
<Résultat> = TableFormuleAjoute(<Colonne> , <Libellé du calcul> , <Initialisation> , <Itération> , <Terminaison>)
<Résultat> : Entier
Indice de la ligne contenant la formule.
<Colonne> : Nom de champ
Nom de la colonne dans laquelle la formule sera ajoutée.
Si ce paramètre correspond à une chaîne vide (""), la colonne manipulée est la colonne à laquelle appartient le traitement en cours.
<Libellé du calcul> : Chaîne de caractères
Libellé de la ligne supplémentaire dans laquelle le calcul sera affiché.
Si ce libellé n'existe pas, la ligne sera créée.
Si ce libellé existe, mais pas pour la colonne spécifiée, le calcul est affiché dans la ligne existante mais pour la colonne spécifiée.
Si ce libellé existe pour la colonne spécifiée, une erreur WLangage est affichée.
<Initialisation> : Nom de procédure ou NULL
  • Nom de la procédure WLangage (également nommée "callback") appelée pour initialiser la formule. Cette procédure est de la forme :
    PROCEDURE <Nom de la procédure> ()
    // votre code

    RENVOYER <Valeur d'initialisation Accumulateur>

    où <Valeur d'initialisation Accumulateur> est la valeur à renvoyer pour la première itération du calcul.
  • NULL si la formule ne nécessite pas de traitement d'initialisation.
<Itération> : Nom de procédure ou NULL
  • Nom de la procédure WLangage (également nommée "callback") appelée pour chaque itération de la formule (chaque ligne du champ Table). Cette procédure a accès uniquement en lecture aux colonnes de la ligne. Cette procédure est de la forme :
    PROCEDURE <Nom de la procédure> (<Accumulateur>, <Valeur de la colonne>)
    // Appelée pour chaque ligne du champ Table
    // Votre code

    RENVOYER <Nouvelle valeur Accumulateur>

    où :
    • <Accumulateur> est la valeur provenant du précédent calcul (initialisation ou itération précédente).
    • <Valeur de la colonne> est la valeur de la colonne en cours servant à faire le calcul de cette itération.
    • <Nouvelle valeur Accumulateur> est la nouvelle valeur à renvoyer pour l'itération suivante ou la fin du calcul.
  • NULL si la formule ne nécessite pas de traitement d'itération.
<Terminaison> : Chaîne de caractères
  • Nom de la procédure WLangage (également nommée "callback") appelée pour terminer la formule. Cette procédure est de la forme :
    PROCEDURE <Nom de la procédure>  (<Accumulateur>)
    // votre code

    RENVOYER <Valeur de fin Accumulateur>

    où :
    • <Accumulateur> est la valeur provenant du précédent calcul (initialisation ou itération précédente).
    • <Valeur de fin Accumulateur> est la valeur à renvoyer correspondant à la valeur de fin du calcul.
  • NULL si la formule ne nécessite pas de traitement de terminaison.
Remarques

Conditions d'ajout de la ligne contenant la formule de calcul personnalisée

  • Si le calcul nommé <Libellé du calcul> n'existe pas dans le champ Table, une nouvelle ligne de calcul est ajoutée sous le champ Table (à la suite des calculs existants).
  • Si un calcul nommé <Libellé du calcul> a déjà été défini pour une autre colonne, le calcul est affiché pour la colonne spécifiée dans la ligne de calcul existante.
  • Si un calcul nommé <Libellé du calcul> a déjà été défini pour la même colonne, une erreur WLangage est affichée.
  • Seules 5 lignes de calcul personnalisé peuvent être ajoutées.
Remarque : Cette fonction peut être utilisée :
  • sur les colonnes d'un champ Table ou Table hiérarchique fichier.
  • sur les colonnes d'un champ Table ou Table hiérarchique par programmation.

Recalcul des données

Les lignes de calculs personnalisés sont automatiquement recalculées dès que le contenu du champ Table change.
Conseil : La procédure d'itération est appelée pour chaque ligne : il est recommandé de ne pas faire de calculs trop lents (par exemple, éviter les accès à la base de données).

Personnalisation de la ligne de calculs

Il est possible de personnaliser la ligne ajoutée (libellé, couleur, police, hauteur, ...) avec cette syntaxe :
<Champ Table>[Numéro ligne].<Propriété> = <Nouvelle valeur>
où <Propriété> peut correspondre à une des propriétés utilisable sur une colonne d'un champ Table. Pour plus de détails, consultez Programmation de calculs personnalisés dans les champs Table.
Classification Métier / UI : Code UI
Composante : wd300obj.dll
Version minimum requise
  • Version 22
Documentation également disponible pour…
Commentaires
Type de l'accumulateur
C'est le RENVOYER de la procédure d'initialisation qui défini le type de la variable "Accumulateur".
Pour avoir un entier :
RENVOYER 0
Pour fixer le nombre de décimale :
RENVOYER 0.00

Siliquae
Arbos
23 fév. 2019

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale