1 pièce(s) jointe(s)
Acces à une base de données MySQL à partir de VBA Excel - Pb du type d'erreur au moment du connect
Bonjour,
Mon application est du type client - serveur. Le client est écrit en VBA for Excel, le serveur est MYSQL
Versions de logiciels
- Windows 10
- MYSQL 8.0 (en version MYSQL COMMODITY SERVER - GPL)
- MySQL ODBC 8.0 ANSI Driver
- Excel 2016
ODBC est configuré de la manière suivante :
DSN : MYSQL ODBC 8.0 ANSI DRIVER (32 bits)
DSN : localhost
TCP/IP Server : 3306
User : root
Password : xyztuv
La connexion est du type
DANS MODULE MAIN
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Public cn As ADODB.Connection
Public rs As ADODB.Recordset
Public Function ConnectDB() As ADODB.Connection
'Fonction connexion à MySQL
Dim S, DatabaseName, MySQLUser ,Pwd As String
DatabaseName = "TestDB"
Set ConnectDB = New ADODB.Connection
S = "DRIVER={MySQL ODBC 8.0 ANSI Driver};" & _
"SERVER=localhost" & ";" & _
"DATABASE=" & DatabaseName & ";" & _
"USER=root" & ";" & _
"PASSWORD=xyztuv & ";" & _
"Option=3"
ConnectDB.Open S
End Function |
DANS MODULE APPELANT
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Private Sub Main()
Dim requete as String
On Error GoTo Connect_Error
Set cn = ConnectDB()
Requete = "SELECT count(*) FROM Client"
Set Rs = New ADODB.Recordset
requete = "SELECT count(*) as NbClient FROM CLIENT "
Rs.Open requete, cn
Msgbox "Nombre de clients" & NbClient
...
Rs.Close
Set Rs = Nothing
Exit Function
Connect_Error:
If Not IsNull(Err.Number) Then msgerror = msgerror & vbCrLf & "Error number : " & Err.Number
If Not IsNull(Err.Description) Then msgerror = msgerror & vbCrLf & "Error description : " & Err.Description
MsgBox msgerror
End function |
Tout cela fonctionne parfaitement bien sur un PC stand-alone
Cette application doit passer dans un mode multi-users avec plusieurs PC et MySQL hébergé sur un serveur Windows
J'ai 2 questions
- Pour la connexion ai-je intérêt à utiliser un seul user MySQL (type root mais avec des droits plus restreints ?)
ou un user MySQL différent par utilisateur ?
- Comment gérer les différents cas d'erreurs de connexion au serveur au moment du ConnectDB () ?
Le pb étant que quelque soit le type d'erreur
- on a le même Err.Number
- un Err.Message ne permettant pas de distinguer les différents types d'erreur : pn de login, password (dans le cas où j'opte pour plusieurs users), pb réseau, serveur down ...
Je n'ai rien trouver dans la doc MySQL
Si quelqu'un a des idées, je serais ravi
Merci