mth_ValeurMaximale
Calcule en mémoire la valeur maximale d'un membre numérique sur tous les tuples présents dans m_tabResults. Recherche en mémoire — aucune requête SQL n'est émise.
📋 Description
mth_ValeurMaximale parcourt l'ensemble du tableau m_tabResults et retourne la plus grande valeur trouvée pour le membre numérique désigné par son nom. La méthode est l'équivalent en mémoire d'un MAX(colonne) SQL, mais appliqué au jeu d'objets déjà chargé.
1. Calcul d'agrégat sur un jeu déjà chargé. Après un mth_ChargerSelonClauseWhere, on veut le maximum d'un attribut numérique (montant, quantité, durée…) sans relancer une requête SQL d'agrégation.
2. Statistiques métier rapides en IHM. Afficher la valeur maximale d'une colonne dans une zone répétée, un tableau, ou un tableau de bord — sans round-trip réseau.
3. Pré-calcul avant traitement. Récupérer la borne supérieure d'un attribut pour cadrer un traitement en aval (par exemple : déterminer le plus haut numéro déjà attribué pour générer le suivant en interne).
La méthode opère uniquement sur le tableau m_tabResults déjà chargé en mémoire. Aucune requête SQL n'est émise, aucun aller-retour réseau, pas d'impact sur la base. C'est une opération en O(n) sur la taille du tableau.
🔑 Signature
LOCAL sMembreClasse est une chaîne
) : Variant
| Élément | Valeur |
|---|---|
| Visibilité | PUBLIQUE |
Paramètres
| Paramètre | Type | Rôle |
|---|---|---|
sMembreClasse | chaîne | Nom du membre WLangage à analyser, sous la forme du nom du membre dans la classe (ex : "m_nMontant", "m_QUANTITE", "m_DUREE"). Le membre désigné doit être de type numérique — voir §03. |
🧭 Types numériques supportés
La méthode n'opère que sur des membres dont le type SQL est numérique. Tout autre type (chaîne, date, booléen, mémo…) provoque un retour Null.
| Catégorie | Types acceptés |
|---|---|
| Entiers signés | 1, 2, 4 et 8 octets |
| Entiers non signés | 1, 2, 4 et 8 octets |
| Réels | 4 et 8 octets, réel turbo |
| Numérique | Type numérique précis (compatibilité grand format) |
| Monétaire | Type dédié aux valeurs financières |
| Durée | Type dédié aux durées |
| Identifiant automatique | IDAuto, IDAuto4 |
Pour calculer un agrégat sur des chaînes (par exemple le « max alphabétique » d'un libellé) ou sur des dates / heures, cette méthode renverra Null. Pour ces besoins, parcourir manuellement m_tabResults ou utiliser une requête SQL avec MAX() reste la solution la plus simple.
📤 Valeur de retour
La méthode retourne un Variant. Selon les cas :
| Cas | Retour |
|---|---|
| Tableau peuplé, membre numérique valide | Valeur maximale trouvée parmi tous les tuples |
| Membre désigné inconnu de la classe | Null |
| Membre désigné de type non numérique | Null |
Tuples marqués supprimés logiquement (p_bRecordDeleted = Vrai) | Exclus du calcul (voir l'encadré ci-dessous) |
m_tabResults est vide | Null |
Les tuples dont la propriété p_bRecordDeleted (alias français : p_bEnregistrementSupprimé) vaut Vrai sont automatiquement exclus du calcul. Cela couvre deux scénarios usuels :
1. Suppression en lot via mth_EnregistrerTableau : un élément du tableau interne dont la PK est passée à une valeur négative est supprimé en base, et le drapeau p_bRecordDeleted est posé à Vrai. L'élément reste dans le tableau en mémoire mais n'est plus pris en compte par les méthodes d'agrégat.
2. Marquage logique applicatif : le code applicatif peut poser p_bRecordDeleted = Vrai sur certains tuples pour les exclure des calculs sans les supprimer en base. Pratique pour des calculs conditionnels sur un sous-ensemble.
La même logique s'applique à mth_SommeValeurs, mth_ValeurMoyenne, mth_ValeurMinimale, mth_ValeursDistinctes et mth_Regroupement.
<> NullLe retour Null couvre indifféremment les trois cas d'absence (membre inconnu, type non numérique, tableau vide). Tester SI vMax <> Null ALORS avant utilisation est la pratique courante.
💡 Exemples
Mode 1 — montant max sur un jeu de commandes
Mode 2 — détermination d'une borne avant traitement
Cas d'usage : dans un référentiel partiellement géré côté applicatif, on veut générer un nouveau numéro d'ordre supérieur au plus grand existant.
Mode 3 — affichage d'agrégat dans un tableau de bord