Bonjour à tous !
Je suis en train d'écrire un module de classe qui, en gros, mappe un enregistrement de ma base de donnée avec l'objet.
Donc en gros, chaque champ de ma table est une propriété de l'objet.
J'ai créé des méthodes qui permettent d'instancier l'objet en passant une clé primaire en paramètre et ce genre de chose, tout fonctionne très bien.
Mais je m'interroge sur la meilleure façon de travailler avec la connexion à ma base de données.
En gros, ce module est pour l'instant utilisé dans un projet VBA Autocad, et il pourra être utilisé dans un projet VBA Access (pas sûr, mais possible).
Dans le projet Autocad, j'utilise beaucoup d'appels à la base de données, j'ai donc créé une variable globale contenant ma connexion à cette BDD.
Lorsque j'ai besoin de cette connexion, j'exécute systématiquement une procédure "checkconnexion" qui teste si ma connexion est ouverte, et l'ouvre si elle ne l'est pas.
Les méthode et les propriétés de ma classe font aussi beaucoup appel à cette connexion.
Pour l'instant, j'ai écrit mon module en utilisant comme connexion la variable globale (avec appel à ma procédure "checkconnexion", qui se trouve en dehors du module de classe).
Seulement, je me rends compte que ce n'est pas une "bonne pratique". Je ne peux pas utiliser un objet global dans mon module de classe car ça empêche la portabilité du module (j'ai lu ça dans un article de developpez.net, et je suis tout à fait d'accord).
Je me suis simplement dit que je devais "imiter" l'objet recordset et définir une propriété "connection" pour ma classe. Quand j'instancie l'objet, je fait simplement un
set monobjet.connection = maconnexionglobale
Le seul "hic", c'est que dans ça alourdit beaucoup mon code, car j'aurai partout cette attribution de connexion, alors qu'il s'agira toujours (sauf si un jour je réutilise ce module, ce qui n'est pas sûr) de la variable globale.
Utiliser la variable globale dans la classe, c'est mal, mais c'est bien plus simple et léger.
Je me disais qu'il existait peut-être un moyen de définir cette connexion comme étant globale "à l'intérieur de la classe", de telle façon que toutes les instances ré-utilisent la même connexion, mais que le module reste portable.
Est-ce que c'est possible ? Je ne maitrise pas parfaitement les objets en VB, je ne sais pas si un objet peut exister pour toutes les instances d'une classe, mais ne pas exister à l'extérieur de cette classe.
J'espère que vous me suivez, ce n'est peut-être pas clair...
Tous les conseils sont les bienvenus, et merci d'avance !
Partager