mth_RenvoyerIDSelonAttribut
Recherche dans le tableau interne m_tabResults tous les objets dont un membre nommé est égal à une valeur cherchée, et retourne un tableau de leurs clés primaires. Recherche en mémoire — aucune requête SQL n'est émise.
📋 Description
mth_RenvoyerIDSelonAttribut permet de retrouver, parmi les objets présents dans m_tabResults, tous ceux dont un membre désigné par son nom contient la valeur cherchée, et de récupérer leurs clés primaires sous forme de tableau d'entiers.
Contrairement à mth_RenvoyerAttributSelonID et mth_RenvoyerAttributSelonGUID qui retournent une seule valeur (premier match), mth_RenvoyerIDSelonAttribut est une recherche multi-match : si plusieurs objets correspondent au critère, tous les IDs sont collectés.
1. Recherche par valeur fonctionnelle (code, libellé, statut, catégorie). Typiquement, on a une valeur métier en main et on veut retrouver les enregistrements correspondants — par exemple, retrouver tous les clients dont le code postal vaut "75001", ou toutes les commandes au statut "En attente".
2. Récupération multi-match. La méthode retourne tous les IDs qui matchent, pas seulement le premier. Utile pour lister tous les enregistrements partageant un même statut, une même catégorie, ou tout autre attribut non unique.
3. Pré-sélection en mémoire avant action. Récupérer une liste d'IDs pour ensuite itérer dessus (chargement détaillé, suppression sélective, mise à jour en lot) sans repasser par SQL.
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,
LOCAL vValeurCherchée est un Variant
) : tableau d'entiers
| Élément | Valeur |
|---|---|
| Visibilité | PUBLIQUE |
Paramètres
| Paramètre | Type | Rôle |
|---|---|---|
sMembreClasse | chaîne | Nom du membre WLangage à comparer, sous la forme du nom du membre dans la classe (ex : "m_sCodeArticle", "m_VILLE", "m_nSTATUT"). |
vValeurCherchée | Variant | Valeur recherchée dans le membre désigné. Le type accepté est volontairement polymorphe (Variant) pour s'adapter à tout type d'attribut : chaîne, entier, booléen, date, etc. |
🧭 Comportement multi-match
La méthode parcourt m_tabResults dans son intégralité et collecte la clé primaire de chaque élément satisfaisant le critère sMembreClasse = vValeurCherchée. C'est une différence notable avec ses méthodes sœurs :
| Méthode | Stratégie | Retour |
|---|---|---|
| mth_RenvoyerAttributSelonID | Premier match (ID unique) | Variant |
| mth_RenvoyerAttributSelonGUID | Premier match (GUID unique) | Variant |
mth_RenvoyerIDSelonAttribut | Multi-match (tous les éléments satisfaisant le critère) | Tableau d'entiers |
Comparaison stricte sur la valeur
La comparaison est une égalité stricte entre la valeur du membre et vValeurCherchée. Pas de LIKE, pas d'expression régulière, pas de comparaison insensible à la casse — le critère est binaire (égal / pas égal).
Le tableau peut contenir 0, 1 ou plusieurs IDs selon le nombre d'objets matchant le critère. Tester SI Dimension(tabIDs) > 0 ALORS avant d'itérer est la pratique courante.
📤 Valeur de retour
La méthode retourne un tableau d'entiers. Selon les cas :
| Cas | Retour |
|---|---|
| Un ou plusieurs objets satisfont le critère | Tableau contenant les clés primaires de tous les éléments matchant |
sMembreClasse est vide ou ne contient que des espaces | Tableau vide |
vValeurCherchée vaut Null | Tableau vide |
m_tabResults est vide | Tableau vide |
| Aucun élément du tableau ne correspond | Tableau vide |
Le retour est toujours un tableau valide — jamais Null. Les cas d'absence (paramètres invalides, tableau source vide, aucun match) se distinguent uniquement par leur taille zéro.
💡 Exemples
Mode 1 — recherche par valeur fonctionnelle (multi-match)
Mode 2 — itération sur les IDs trouvés pour traitement
Cas d'usage : récupérer tous les enregistrements partageant un statut, puis les traiter un par un.
Mode 3 — recherche avec une valeur typée (entier, booléen, date)
Le 2e paramètre étant un Variant, n'importe quel type de valeur peut être utilisé pour la recherche.
Mode 4 — combinaison avec mth_RenvoyerAttributSelonID
Cas d'usage typique : trouver les IDs par critère, puis lire un attribut précis sur chacun, le tout en mémoire.