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
DANS MODULE APPELANT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Tout cela fonctionne parfaitement bien sur un PC stand-alone
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Partager