à l'aide de Visual Basic pour applications forts>, comment puis-je savoir quelle version du pilote MySQL ODBC est installée dans Windows sur la machine d'un utilisateur? J'ai une application Microsoft Access qui utilise le MySQL Pilote ODBC pour créer une connexion. La chaîne de connexion ressemble à ceci: p> Ceci utilisait la recherche jusqu'à ce que le gestionnaire IT ait installé la version 5.1 du pilote MySQL ODBC sur le PC d'utilisateur, qui a cassé ma chaîne de connexion. < / p> Si je connaissais la version du pilote installé sur l'installation de Windows XP de l'utilisateur, je pourrais insérer cela dans la chaîne de connexion au moment de l'exécution. Comment puis-je savoir quelle version du pilote MySQL ODBC est installé sous Windows sur la machine d'un utilisateur à l'aide de VBA? strong> p> P>
3 Réponses :
Vous pouvez le trouver dans le registre sous à l'aide des informations trouvées ici , vous pouvez en obtenir à l'aide du code ci-dessous (je l'ai testé dans Access 97) P> Private Sub Command0_Click()
If RegKeyExists("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\
ODBC Drivers\MySQL ODBC 3.51 Driver") Then
MsgBox "3.51"
ElseIf RegKeyExists("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\
ODBC Drivers\MySQL ODBC 5.1 Driver") Then
MsgBox "5.1"
Else
MsgBox "None"
End If
End Sub
'returns True if the registry key i_RegKey was found
'and False if not
Function RegKeyExists(i_RegKey As String) As Boolean
Dim myWS As Object
On Error GoTo ErrorHandler
'access Windows scripting
Set myWS = CreateObject("WScript.Shell")
'try to read the registry key
myWS.RegRead i_RegKey
'key was found
RegKeyExists = True
Exit Function
ErrorHandler:
'key was not found
RegKeyExists = False
End Function
Comment utiliser VBA pour regarder le registre à l'emplacement que vous avez spécifié?
Vous trouverez un script ici ici Stackoverflow.com/Questtions/2020181 / Find-Version-of-Access / ... pour vérifier le registre qui fonctionnera dans l'accès.
Ce script utilise VB.NET, qui ne se traduit pas toujours vers VBA. Comment ça va marcher?
Juste une pensée, mais la fonction vérifie la clé existe, pas la valeur de la clé, je ne sais pas si la clé est désinstallée avec le pilote. Donc, vous pouvez également vérifier la valeur de la clé. Il y a une fonction pour cela dans le lien de ma réponse.
@Ben McCormick 'Ce script' n'utilise pas vb.net, il utilise VBScript et fonctionne correctement dans l'accès. Ou au moins cela a fait quand je l'ai mis ensemble :)
Le script n'utilise pas VBScript, mais VBA, car il sera exécuté à l'intérieur de l'accès. Comme écrit, il nécessiterait une modification substantielle pour fonctionner en tant que VBScript.
@DW Fenton, si vous faites référence à mon commentaire, le script que je fais référence est dans le lien que j'ai publié comme un commentaire, à ce moment-là, le poste ci-dessus n'avait aucun code du tout. Le script dans le lien est VBScript, j'ai testé à la fois dans l'accès et la VBScript lorsque je le faisais ensemble.
Ok - j'ai raté les choses de traçage. Probablement pas une bonne idée d'utiliser quelque chose aussi ambigu que «ce script» dans un commentaire, vous ne pensez-vous pas?
Peut-être la peine d'ajouter une vérification des systèmes 64 bits en tant que Regney Path diffère HKEY_LOCAL_MACHINE \ logiciel \ wow6432node \ odbc \ odbcinst.ini \ mon pilote SQL ODBC 5.1
Voici quelques idées possibles: P>
1 Vous pourrez peut-être vérifier le registre et rechercher des clés spécifiques, comme celle-ci, par exemple: [HKEY_LOCAL_MACHINE \ logiciel \ ODBC \ ODBCInst.ini \ MySQL ODBC 3.51 Driver] P>
2.Vous pouvez vérifier leur dossier C: \ windows \ system32 pour la myodbc.dll, puis vérifier les informations de version. Voici un lien sur la façon de vérifier la version: http://www.vb-helper.com/howto_file_version_info.html P >
Si vous souhaitez éviter de manipuler des versions sur un cas par cas, vous pouvez itération via les valeurs de clé, par exemple ..
Cette fonction est conçue pour énumérer les regretts pour les pilotes ODBC et simplement vérifier l'existence de MySQL. Quelque part, sinon, cela avertit l'utilisateur, alors apportez-les à la page de téléchargement et rappelez-leur d'obtenir la bonne version de leur architecture (32/64) p> et vous Il en a besoin pour énumérer les touches REG (pour plus d'informations sur ce voir http: // technique.microsoft.com/en-us/library/ee176771.aspx ): p>
Remarque: activeworkbook.followyHyperLink code> est pour Excel.
Suivre HypertyLink Code> fonctionne bien dans l'accès. CONSEIL: Mettez à jour le code pour renvoyer la chaîne correcte trouvée, par exemple:
si (Strask, "mysql")> 0 et instr (strask, "Unicode")> 0) puis STROUND = STASK MODLOG.LOG logName, "Matching MySQL Pilote:" & Strfound, log_info fin si code> et
sinon checkmysql = extrémité striédise si code>