Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Microsoft ActiveX Data Objects 2.6 Library - Pb maîtrise version et dll

4 réponses
Avatar
Alain79
Dans le cadre d'une application VBA sous Excel 2000 sur poste W2000pro SP4,
et afin de pouvoir mettre en oeuvre des connexions ADO j'ai intégré une
référence à
- "Microsoft ActiveX Data Objects 2.6 Library"
- C:\Program Files\Common Files\System\ADO\msado15.dll
Jusque la tout va bien...

Lors du déport de mon complément Excel (Addin) sur un autre poste
normalement également en Excel2000 W2000pro et SP4, deux problèmes se sont
présentés :
- la référence "Microsoft ActiveX Data Objects 2.6 Library" n'était pas
disponible
- la référence "Microsoft ActiveX Data Objects 2.5 Library" l'était mais
pointait sur un fichier dll portant le même nom "msado15.dll" que celui me
donnant "Microsoft ActiveX Data Objects 2.6 Library" sur le poste
d'origine... ! Par contre les dll pointant sur d'autres versions antérieures
de "Microsoft ActiveX Data Objects Library", v2.3 et 2.4 en l'occurrence
ne présentaient pas de défaut, elles portaient bien le même nom pour des
version identiques de "Microsoft ActiveX Data Objects Library".

Mes quelques questions...
- Qu'est-ce qui détermine les références disponibles sur un poste ? ou
autrement dit comment uniformiser différents postes au regard des références
disponibles, l'appli devant à terme être déployée sur 20 à 30 postes dont
certains à l'étranger...
- Est-ce à votre avis normale que la même dll pointe dans une machine sur
"Microsoft ActiveX Data Objects 2.6 Library" et sur "Microsoft ActiveX Data
Objects 2.5 Library" dans une autre ?

Merci pour votre contribution
@+ Alain79

4 réponses

Avatar
Frédéric Sigonneau
Bonjour,

Difficile de prévoir absolument tous les cas de figure possibles de
configuration d'une trentaine de postes...
Une solution possible, AMA, pour éviter les mauvaises surprises, est de recourir
dans ton code au 'late binding' (création des objets à l'exécution) plutôt qu'à
l''early binding' (intégration des objets à la compilation qui utilise la
référence à une librairie installée sur le poste).
Concrètement, plutôt que d'établir une référence sur ton poste à une
bibliothèque (qui ne sera pas forcément présente sur un autre dans la même
version), ce qui te permet de déclarer tes variables sous cette forme (par
exemple, pour un Recordset) :

Dim rs As New ADODB.Recordset

utilise ce genre de syntaxe :

Dim rs As Object
Set rs=CreateObject("ADODB.Recordset")

De cette manière, Excel utilisera la bibliothèque installée sur le poste où le
code s'exécute. Risque d'erreur cependant si cette bibliothèque ne permet pas
l'exécution du code demandé (version trop ancienne par exemple). Mais, si c'est
critique pour toi, tu devrais pouvoir tester la version du poste et demander une
mise à jour si version trop ancienne.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Dans le cadre d'une application VBA sous Excel 2000 sur poste W2000pro SP4,
et afin de pouvoir mettre en oeuvre des connexions ADO j'ai intégré une
référence à
- "Microsoft ActiveX Data Objects 2.6 Library"
- C:Program FilesCommon FilesSystemADOmsado15.dll
Jusque la tout va bien...

Lors du déport de mon complément Excel (Addin) sur un autre poste
normalement également en Excel2000 W2000pro et SP4, deux problèmes se sont
présentés :
- la référence "Microsoft ActiveX Data Objects 2.6 Library" n'était pas
disponible
- la référence "Microsoft ActiveX Data Objects 2.5 Library" l'était mais
pointait sur un fichier dll portant le même nom "msado15.dll" que celui me
donnant "Microsoft ActiveX Data Objects 2.6 Library" sur le poste
d'origine... ! Par contre les dll pointant sur d'autres versions antérieures
de "Microsoft ActiveX Data Objects Library", v2.3 et 2.4 en l'occurrence
ne présentaient pas de défaut, elles portaient bien le même nom pour des
version identiques de "Microsoft ActiveX Data Objects Library".

Mes quelques questions...
- Qu'est-ce qui détermine les références disponibles sur un poste ? ou
autrement dit comment uniformiser différents postes au regard des références
disponibles, l'appli devant à terme être déployée sur 20 à 30 postes dont
certains à l'étranger...
- Est-ce à votre avis normale que la même dll pointe dans une machine sur
"Microsoft ActiveX Data Objects 2.6 Library" et sur "Microsoft ActiveX Data
Objects 2.5 Library" dans une autre ?

Merci pour votre contribution
@+ Alain79


Avatar
Alain79
Merci pour ton intervention, j'essaierai le Late Binding - Quelques
interrogations néanmoins...
- A quel moment et avec quel soft MS sont installés les contrôles activeX
sur lesquels les références pointent - Ou autrement dit, si le contrôle
ActiveX n'est pas présent sur un poste que doit'on faire pour le récupérer ?
Est-ce lié à l'installatio d'Excel lui même ou alors d'un autr composant ?
- Comment obtenirde l'aide sur l'utilisation de l'ADO au sein d'Excel, et
si on la récupère, peut-on l'intégrer à l'aide standard de telle sorte que
la soft key <F1> soit opérationel sur un mot clef ADO dans un module de code
?
- Comment se fait-il que je puisse trouver deux dll de même nom ne pointant
pas sur le même contrôle activeX - cela signifie -t'il que c'est un peu le
bordel dans le monde des contrôle activeX... ?
- Comment tester si un contrôle ActiveX est présent sur un poste ?

Merci encore et @+
Alain79


"Frédéric Sigonneau" wrote in message
news:
Bonjour,

Difficile de prévoir absolument tous les cas de figure possibles de
configuration d'une trentaine de postes...
Une solution possible, AMA, pour éviter les mauvaises surprises, est de
recourir

dans ton code au 'late binding' (création des objets à l'exécution) plutôt
qu'à

l''early binding' (intégration des objets à la compilation qui utilise la
référence à une librairie installée sur le poste).
Concrètement, plutôt que d'établir une référence sur ton poste à une
bibliothèque (qui ne sera pas forcément présente sur un autre dans la même
version), ce qui te permet de déclarer tes variables sous cette forme (par
exemple, pour un Recordset) :

Dim rs As New ADODB.Recordset

utilise ce genre de syntaxe :

Dim rs As Object
Set rs=CreateObject("ADODB.Recordset")

De cette manière, Excel utilisera la bibliothèque installée sur le poste
où le

code s'exécute. Risque d'erreur cependant si cette bibliothèque ne permet
pas

l'exécution du code demandé (version trop ancienne par exemple). Mais, si
c'est

critique pour toi, tu devrais pouvoir tester la version du poste et
demander une

mise à jour si version trop ancienne.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Dans le cadre d'une application VBA sous Excel 2000 sur poste W2000pro
SP4,


et afin de pouvoir mettre en oeuvre des connexions ADO j'ai intégré une
référence à
- "Microsoft ActiveX Data Objects 2.6 Library"
- C:Program FilesCommon FilesSystemADOmsado15.dll
Jusque la tout va bien...

Lors du déport de mon complément Excel (Addin) sur un autre poste
normalement également en Excel2000 W2000pro et SP4, deux problèmes se
sont


présentés :
- la référence "Microsoft ActiveX Data Objects 2.6 Library" n'était
pas


disponible
- la référence "Microsoft ActiveX Data Objects 2.5 Library" l'était
mais


pointait sur un fichier dll portant le même nom "msado15.dll" que celui
me


donnant "Microsoft ActiveX Data Objects 2.6 Library" sur le poste
d'origine... ! Par contre les dll pointant sur d'autres versions
antérieures


de "Microsoft ActiveX Data Objects Library", v2.3 et 2.4 en
l'occurrence


ne présentaient pas de défaut, elles portaient bien le même nom pour des
version identiques de "Microsoft ActiveX Data Objects Library".

Mes quelques questions...
- Qu'est-ce qui détermine les références disponibles sur un poste ? ou
autrement dit comment uniformiser différents postes au regard des
références


disponibles, l'appli devant à terme être déployée sur 20 à 30 postes
dont


certains à l'étranger...
- Est-ce à votre avis normale que la même dll pointe dans une machine
sur


"Microsoft ActiveX Data Objects 2.6 Library" et sur "Microsoft ActiveX
Data


Objects 2.5 Library" dans une autre ?

Merci pour votre contribution
@+ Alain79





Avatar
Clément Marcotte
Bonjour,

- A quel moment et avec quel soft MS sont installés les contrôles
activeX

sur lesquels les références pointent - Ou autrement dit, si le
contrôle

ActiveX n'est pas présent sur un poste que doit'on faire pour le
récupérer ?


Dans le cas précis de ADO at DAO, les bibliothèques viennent
généralement avec Windows, la version de Windows déterminant la
version des bibliothèques. Ceci dit, il est possible de télécharger
gratuitement MDAC (Microsoft Data Access Components) qui fournit les
bibliothèques d'accès aux données.

La plus récente version française est MDAC 2.8 qui fournit la version
2.8 des bibliothèques ADO. De mémoire, il est encore possible de
télécharger certaines versions précédentes, jusqu'à 2.5, je pense.

Tu peux toujours aller voir par là:

http://www.microsoft.com/data


- Comment obtenirde l'aide sur l'utilisation de l'ADO au sein
d'Excel


Quelques articles:

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q246335

http://support.microsoft.com/default.aspx?scid=kb;FR;q257819

http://support.microsoft.com/default.aspx?scid=kb;FR;q252908

http://support.microsoft.com/default.aspx?scid=kb;FR;q278973 (Si j'ai
bien compris, il te permet de télécharger un fichier d'exemples)


si on la récupère, peut-on l'intégrer à l'aide standard de telle
sorte que

la soft key <F1> soit opérationel sur un mot clef ADO dans un module
de code

?


À part que de faire ton propre fichier d'aide, je ne vois pas trop.


- Comment se fait-il que je puisse trouver deux dll de même nom ne
pointant

pas sur le même contrôle activeX - cela signifie -t'il que c'est un
peu le

bordel dans le monde des contrôle activeX... ?


Je ne sais pas ce qui se passe dans ce cas précis, mais n'importe qui
disposant de VisualStudio peut créer des contrôles ActiveX, et leur
donner le nom qu'il veut. Même que Jean-Claude Bellamy a déjà donné
l'adresse d'un produit gratuit de MS qui permet de faire des contrôles
ActiveX.

Avatar
Frédéric Sigonneau
RE,


Merci pour ton intervention, j'essaierai le Late Binding - Quelques
interrogations néanmoins...
- A quel moment et avec quel soft MS sont installés les contrôles activeX
sur lesquels les références pointent - Ou autrement dit, si le contrôle
ActiveX n'est pas présent sur un poste que doit'on faire pour le récupérer ?


Les MDAC (Microsoft Data Access Components) sont considérés par Microsoft comme
une partie du système d'exploitation. Ils sont inclus dans la distribution de
l'OS depus Windows 2000. Ils peuvent néanmoins être utilisés dans les versions
antérieures, à partir de Windows 95, en les téléchargeant depuis cette adresse :

http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp

Est-ce lié à l'installatio d'Excel lui même ou alors d'un autr composant ?
- Comment obtenirde l'aide sur l'utilisation de l'ADO au sein d'Excel, et
si on la récupère, peut-on l'intégrer à l'aide standard de telle sorte que
la soft key <F1> soit opérationel sur un mot clef ADO dans un module de code


Il y avait, avec Windows 2000, un fichier d'aide pour ADO (Ado210.chm). Il est
peut-être en téléchargement quelque part sur le site de Microsoft, mais ne
semble pas inclus dans Windows XP.
Sinon, quand tu as établi une référence à la bibliothèque, l'explorateur
d'objets peut te fournir pas mal d'infos.

- Comment se fait-il que je puisse trouver deux dll de même nom ne pointant
pas sur le même contrôle activeX - cela signifie -t'il que c'est un peu le
bordel dans le monde des contrôle activeX... ?


Il n'est pas rare que des fichiers, y compris des dll ou ocx, portent le même
nom au fil de versions qui en modifient les fonctionnalités...

- Comment tester si un contrôle ActiveX est présent sur un poste ?


Une manière de faire peut être d'essayer de le créer (avec CreateObject) et de
tester si cette tentative déclenche ou non une erreur.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

Merci encore et @+
Alain79

"Frédéric Sigonneau" wrote in message
news:
Bonjour,

Difficile de prévoir absolument tous les cas de figure possibles de
configuration d'une trentaine de postes...
Une solution possible, AMA, pour éviter les mauvaises surprises, est de
recourir

dans ton code au 'late binding' (création des objets à l'exécution) plutôt
qu'à

l''early binding' (intégration des objets à la compilation qui utilise la
référence à une librairie installée sur le poste).
Concrètement, plutôt que d'établir une référence sur ton poste à une
bibliothèque (qui ne sera pas forcément présente sur un autre dans la même
version), ce qui te permet de déclarer tes variables sous cette forme (par
exemple, pour un Recordset) :

Dim rs As New ADODB.Recordset

utilise ce genre de syntaxe :

Dim rs As Object
Set rs=CreateObject("ADODB.Recordset")

De cette manière, Excel utilisera la bibliothèque installée sur le poste
où le

code s'exécute. Risque d'erreur cependant si cette bibliothèque ne permet
pas

l'exécution du code demandé (version trop ancienne par exemple). Mais, si
c'est

critique pour toi, tu devrais pouvoir tester la version du poste et
demander une

mise à jour si version trop ancienne.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Dans le cadre d'une application VBA sous Excel 2000 sur poste W2000pro
SP4,


et afin de pouvoir mettre en oeuvre des connexions ADO j'ai intégré une
référence à
- "Microsoft ActiveX Data Objects 2.6 Library"
- C:Program FilesCommon FilesSystemADOmsado15.dll
Jusque la tout va bien...

Lors du déport de mon complément Excel (Addin) sur un autre poste
normalement également en Excel2000 W2000pro et SP4, deux problèmes se
sont


présentés :
- la référence "Microsoft ActiveX Data Objects 2.6 Library" n'était
pas


disponible
- la référence "Microsoft ActiveX Data Objects 2.5 Library" l'était
mais


pointait sur un fichier dll portant le même nom "msado15.dll" que celui
me


donnant "Microsoft ActiveX Data Objects 2.6 Library" sur le poste
d'origine... ! Par contre les dll pointant sur d'autres versions
antérieures


de "Microsoft ActiveX Data Objects Library", v2.3 et 2.4 en
l'occurrence


ne présentaient pas de défaut, elles portaient bien le même nom pour des
version identiques de "Microsoft ActiveX Data Objects Library".

Mes quelques questions...
- Qu'est-ce qui détermine les références disponibles sur un poste ? ou
autrement dit comment uniformiser différents postes au regard des
références


disponibles, l'appli devant à terme être déployée sur 20 à 30 postes
dont


certains à l'étranger...
- Est-ce à votre avis normale que la même dll pointe dans une machine
sur


"Microsoft ActiveX Data Objects 2.6 Library" et sur "Microsoft ActiveX
Data


Objects 2.5 Library" dans une autre ?

Merci pour votre contribution
@+ Alain79