Méthode publique · ORM_CSHX2 · Recherche en mémoire

mth_RenvoyerAttributSelonGUID

Recherche dans le tableau interne m_tabResults l'objet dont le GUID temporaire d'instance correspond à celui passé en paramètre, et retourne la valeur d'un attribut nommé. Recherche en mémoire — aucune requête SQL n'est émise.

PUBLIQUE RECHERCHE MySQL · MariaDB · PostgreSQL
01

📋 Description

mth_RenvoyerAttributSelonGUID permet de retrouver, parmi les objets présents dans m_tabResults, celui dont le GUID temporaire d'instance (p_sGUIDTemp) correspond à celui passé en paramètre, puis d'en extraire la valeur d'un attribut désigné par son nom.

La méthode est polymorphe : elle retourne un Variant, ce qui permet de récupérer indifféremment une chaîne, un entier, un booléen, une date ou tout autre type d'attribut sans typage à la déclaration.

🎯 Quand utiliser cette méthode

1. Identifier un objet avant enregistrement. Quand un objet vient d'être créé en mémoire et n'a pas encore été persisté, sa clé primaire vaut 0. Le GUID temporaire d'instance (attribué dès la construction) est alors le seul identifiant disponible pour le distinguer des autres objets non encore enregistrés.

2. Identification stable d'une ligne UI. Référencer un élément du tableau via son GUID plutôt que via un index de tableau, qui peut changer après un tri ou un filtre.

3. Lookup ad-hoc sur un attribut quand le GUID est déjà connu côté appelant.

ℹ️ Recherche en mémoire — pas de 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.

02

🔑 Signature

Déclaration
PROCÉDURE mth_RenvoyerAttributSelonGUID(
  LOCAL sGUID est une chaîne,
  LOCAL sNomAttribut est une chaîne
) : Variant
ÉlémentValeur
VisibilitéPUBLIQUE

Paramètres

ParamètreTypeRôle
sGUIDchaîneGUID temporaire de l'instance recherchée — typiquement la valeur de p_sGUIDTemp notée précédemment.
sNomAttributchaîneNom de l'attribut à récupérer, sous la forme du nom du membre WLangage (ex : "m_DENOMINATION", "m_VILLE", "m_ID_CLIENT").
03

🧭 Le GUID temporaire d'instance — p_sGUIDTemp

Chaque instance d'une classe métier ORM_CSHX2 possède une propriété publique p_sGUIDTemp qui contient un identifiant unique attribué à la construction de l'objet. Cet identifiant sert de clé pour la recherche en mémoire effectuée par mth_RenvoyerAttributSelonGUID.

Caractéristiques

PropriétéDescription
AttributionAutomatique à la construction de l'instance. L'appelant n'a rien à faire.
Durée de vieMémoire uniquement. Disparaît avec l'instance.
PersistanceAucune. Le GUID n'est jamais écrit en base.
ResetRemis à "" par mth_RAZ (un nouvel appel à mth_RAZ ne régénère pas un nouveau GUID).

Distinction avec SQL_UUID

Ne pas confondre p_sGUIDTemp avec la colonne framework SQL_UUID :

p_sGUIDTempSQL_UUID
StockagePropriété d'instance, mémoire uniquementColonne framework persistée en base
Disponible avant enregistrement✅ Oui (dès la construction)❌ Non (attribué à l'enregistrement)
Survit à la fermeture du programme❌ Non✅ Oui
Usage typiqueIdentification volatile d'instance en mémoireIdentification durable inter-base

Pour cette méthode, c'est bien p_sGUIDTemp qui est utilisé.

04

📤 Valeur de retour

La méthode retourne un Variant. Selon les cas :

CasRetour
Objet trouvé, attribut renseignéValeur de l'attribut (type variable selon l'attribut)
sGUID est vide ou ne contient que des espacesNull
m_tabResults est videNull
Aucun objet du tableau ne correspond au GUIDNull
ℹ️ Tester avec <> Null

Le retour Null couvre indifféremment les trois cas d'absence (GUID vide, tableau vide, GUID non trouvé). Tester SI vRetour <> Null ALORS avant utilisation est la pratique courante.

05

💡 Exemples

Mode 1 — lookup nominal après chargement

// ── Charger des clients en mémoire ────────────────────────────── clClient:p_sClauseWhere = "clients.VILLE = 'Paris'" clClient:mth_ChargerSelonClauseWhere() // ── Mémoriser le GUID d'un objet pour usage ultérieur ─────────── sMonGUID est une chaîne = clClient:m_tabResults[3]:p_sGUIDTemp // ── Plus tard, retrouver un attribut via le GUID ─────────────── vNom est un Variant = clClient:mth_RenvoyerAttributSelonGUID(sMonGUID, "m_DENOMINATION") SI vNom <> Null ALORS Info("Nom du client : " + vNom) SINON Info("Client introuvable dans le tableau") FIN

Mode 2 — identification d'un objet non encore enregistré

Cas d'usage : saisie multi-lignes (zone répétée d'un formulaire) où l'utilisateur ajoute plusieurs objets avant le mth_Enregistrer final.

// ── L'utilisateur ajoute une nouvelle ligne dans la zone répétée ─ clNouveauClient est un Client // PK = 0, p_sGUIDTemp auto-attribué clNouveauClient:m_DENOMINATION = SAI_NomClient // ── On l'ajoute au tableau ────────────────────────────────────── TableauAjoute(clClient:m_tabResults, clNouveauClient) // ── On stocke son GUID dans la ligne IHM (par ex. attribut data) ─ ZRP_Clients[ZRP_Clients] = clNouveauClient:p_sGUIDTemp // ─── Plus tard, sur un événement IHM, retrouver les valeurs ──── sGUIDLigne est une chaîne = ZRP_Clients[ZRP_Clients] vNomLigne est un Variant = clClient:mth_RenvoyerAttributSelonGUID(sGUIDLigne, "m_DENOMINATION") // ✅ Fonctionne même si la PK est encore à 0 (objet pas enregistré)

Mode 3 — lookup défensif avec gestion du Null

vAttribut est un Variant = clClient:mth_RenvoyerAttributSelonGUID(sGUID, "m_VILLE") SI vAttribut = Null ALORS // L'objet n'est plus dans le tableau (peut-être supprimé, RAZ, ou GUID invalide) Trace("GUID introuvable : " + sGUID) SINON sVille est une chaîne = vAttribut // conversion implicite Info("Ville : " + sVille) FIN