PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE


  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Ajoute une ligne calculée dans un champ Table 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 SEPAREE 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 (avec guillemets)
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> : Chaîne de caractères (avec ou sans guillemets)
  • 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> : Chaîne de caractères (avec ou sans guillemets)
  • Nom de la procédure WLangage (également nommée "callback") appelée pour chaque itération de la formule (chaque ligne de la table). Cette procédure est de la forme :
    PROCEDURE <Nom de la procédure> (<Accumulateur>, <Valeur de la colonne>)
    // Appelée pour chaque ligne de la 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'initialisation.
<Terminaison> : Chaîne de caractères (avec ou sans guillemets)
  • 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> ()
    // votre code

    RENVOYER <Valeur de fin Accumulateur>

    où <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 la table, une nouvelle ligne de calcul est ajoutée sous la 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.
  • sur les colonnes des champs fichier ou mémoire.

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 / IHM : Code IHM
Composante : wd240obj.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