Exemple concret : MCodeDouanierListe
Introduction
Les classes de type MxxxListe servent à gérer dynamiquement des collections d’objets métiers (Mxxx
), souvent liés à des données SQL. Ici, nous documentons MCodeDouanierListe
comme modèle d’exemple.
Structure de la classe
CLASSE MCodeDouanierListe
PRIVÉ
m_tabModele est un tableau de MCodeDouanier dynamique <copie=clone>
Le tableau privé m_tabModele
stocke les modèles d’objets métier MCodeDouanier
.
Constructeur
PROCÉDURE Constructeur()
Le constructeur prépare l’instance sans logique spécifique initialement.
Accès au tableau
PROCÉDURE PUBLIQUE p_tabModele()
RENVOYER m_tabModele
Permet d’obtenir une copie contrôlée du tableau des modèles.
Destructeur
PROCÉDURE Destructeur()
Permet d’intercepter la destruction de l’objet pour nettoyage éventuel.
Suppression de tous les éléments
PROCÉDURE SupprimerTout()
m_tabModele.SupprimeTout()
Vide et libère toute la mémoire occupée par les objets du tableau.
Chargement depuis la base de données
PROCÉDURE Charger() : booléen
sTmpSQL est une chaîne
sTmpSQL = [
SELECT
ref_code,
code,
nom,
info,
actif
FROM
LATECodeDouanier
ORDER BY
code
]
RENVOYER ExecuterRequete(sTmpSQL)
Effectue un chargement complet des données depuis la base en utilisant SQL.
Exécution de la requête SQL (Privé)
PROCÉDURE PRIVÉE ExecuterRequete(sTmpSQL est une chaîne) : booléen
sNomReq est une chaîne = "REQ" + DonneIdentifiant()
M est un MCodeDouanier dynamique
SI SQLExec(sTmpSQL, sNomReq) ALORS
SQLPremier(sNomReq)
TANTQUE PAS SQL.EnDehors
M = allouer un MCodeDouanier
M.m_nRefCode = SQLCol(sNomReq, 1)
M.m_sCode = SQLCol(sNomReq, 2)
M.m_sNom = SQLCol(sNomReq, 3)
M.m_sInfo = SQLCol(sNomReq, 4)
M.m_nActif = SQLCol(sNomReq, 5)
m_tabModele.Ajoute(M)
SQLSuivant(sNomReq)
FIN
SINON
SQLErreur(sTmpSQL, sNomReq)
RENVOYER Faux
FIN
SQLFerme(sNomReq)
RENVOYER Vrai
Remplit dynamiquement le tableau m_tabModele
avec les données SQL récupérées.
Ajout d’un modèle
PROCÉDURE Ajouter(M est un MCodeDouanier dynamique) : entier
RENVOYER m_tabModele.Ajoute(M)
Ajoute un objet métier au tableau et retourne son nouvel index.
Recherche d’un modèle par référence
PROCÉDURE GetModele(LOCAL nRefCodeDouanier est un entier) : MCodeDouanier
nIndex est un entier = m_tabModele.Cherche(tcLinéairePremier, "m_nRefCode", nRefCodeDouanier)
SI nIndex > 0 ALORS
RENVOYER m_tabModele[nIndex]
SINON
RENVOYER MCodeDouanier.Vide
FIN
IMPORTANT :
- Usage de
LOCAL
: Le paramètre est en LOCAL pour éviter les effets de bord dans les appels d’interface et garantir l’isolation des valeurs d’entrée. - Typage du retour : Le retour est explicitement typé en
MCodeDouanier
, ce qui est crucial pour :- Permettre la vérification à la compilation.
- Assurer la compatibilité avec les éditeurs d’interface (EDT, tables, etc.).
- Éviter des erreurs dynamiques (type, propriété inexistante).