Bibliothèque de Classes et DLL [Résolu]

Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
- - Dernière réponse : Calade
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
- 5 mars 2011 à 18:46
Bonjour à tous,

Toujours dans mes débuts sous .NET, j'ai une question en 2 points:

Sous VB6 j'avais créé une DLL regroupant un certain nombre de fonctions/commandes SQL. Les fonctions étaient regroupées dans des modules de classe dont la propriété Instancing était à GlobalMultiUse ce qui me permettait de les appeler directement par leur nom dans mes autres applis VB6 pour peu que j'ai une référence à cette DLL.

1ère question: Est-il possible de réutiliser cette DLL telle que dans mon appli .NET ?

2ème question: Si je réécris from scratch cette DLL, je créé sous .NET une nouvelle bibliothèque de classe mais je n'ai trouvé nulle part la propriété Instancing ou son équivalent. Ceci pour ne pas déclarer une classe dans mes applis et ensuite appeler mes fonctions ?

Pour essayer de résumer:
Sous VB6 je fais:

MyRecordset = SQL_RecordsetQuery()
avec MyRecordset dans une appli X et la fonction dans une DLL Y externe.
J'ai des quantités d'applis qui tournent très bien sur ce modèle.

Sous .NET, suis-je obligé de faire
Dim oSQL as MyClassedeFonctionsSQL (résidant dans une DLL externe)
MyRecordset = oSQL.SQL_RecordsetQuery()

En espérant avoir été assez clair.

Calade
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
11 décembre 2018
3
Merci
Bonjour,

1) Oui, en utilisant Interop, regardes dans l'onglet "COM" lors de l'ajout de références.

2) Dans ce cas, on parle de membres partagés (pour le fonctions), Shared en VB.
Ou alors un module public peut aussi faire l'affaire.

Ensuite, appeller :
MyRecordset = EsapceDeNomDeLaDll.MyClassedeFonctionsSQL.SQL_RecordsetQuery()

Mais fais attention, ADO.NET n'est peut être (je n'ai pas essayé) compatible (Je parles des classes) avec ADO.

Merci NHenry 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de NHenry
Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
11 décembre 2018
3
Merci
Bonjour,

Recherches ta classe dans l'explorateur d'objet.

les espaces de noms sont une base de la prog objet.
System.IO est un espace de nom par exemple.

Merci NHenry 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de NHenry
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
0
Merci
Salut NHenry,

et merci de ta réponse.

1) OK, je l'ai rajouté, mais j'obtiens toujours la même erreur:
"SQL_Connect n'est pas déclaré. Il est peut-être inaccessible en raison de son niveau de protection", y a t'il quelque chose que j'ai loupé ?

Ci-dessous l'appel:
P_cnnDBLauncher = SQL_Connect(strBaseName)
P_cnnDBLauncher est déclaré Public en String pour contenir ma chaîne de connexion (précision, je suis resté en ADO 2.8, chaque chose en son temps !).

2
MyRecordset = EsapceDeNomDeLaDll.MyClassedeFonctionsSQL.SQL_RecordsetQuery()
Quel espace de nom ? A moins que tu ne parles de ADO.NET ?
Calade
Commenter la réponse de Calade
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
0
Merci
OK, je pense avoir pigé le principe pour réutiliser mes DLL, par contre si maintenant il reconnait bien ma fonction, j'ai une autre erreur:
Erreur 1 Une référence à un membre non partagé requiert une référence d'objet.

Si je comprends bien, ma fonction étant Public et non Shared (et pour cause), il faut que je déclare ma classe avant ?




Calade
Commenter la réponse de Calade
Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
11 décembre 2018
0
Merci
Bonjour,

Il faut que tu instancies (créer un objet) ta classe avant de pouvoir l'utiliser.
Avec le classique New.

Commenter la réponse de NHenry
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
0
Merci
Bonjour,

Oui, c'est bien ce que je craignais.
Donc ça aussi ça change par rapport à VB6 puisque je n'avais pas besoin d'instancier quoi que ce soit, la référence suffisait.

En tout cas merci pour tout.


Calade
Commenter la réponse de Calade

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.