Bonjour,
Je souhaite effectuer une requête sur une base de données MySQL sur serveur distant. Voici mon code :
Je suis au courant que cela n'est pas propre, je m'en occuperai à la fin.
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
24
25
26
27
28 Sub LireData() Sheets(1).Columns("A:E").ClearContents Sheets(1).Columns("A:E").NumberFormat = "dd/mm/yyyy hh:mm:ss" Dim Rs As ADODB.Recordset Dim Derligne As Long, i As Integer Dim Requete As String Dim col As Integer Dim S As String Set oConnect = New ADODB.Connection Set Rs = New ADODB.Recordset S = "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _ "SERVER=XX.XX.XX.XX;" & _ "DATABASE=XXX;" & _ "USER=XXX;" & _ "PASSWORD=XXX;" & _ "Option=3" oConnect.Open S Sql = "SELECT num_valeur FROM XXX.m5tcyrubi WHERE num_date REGEXP date(now())" Set Rs = oConnect.Execute(Sql) Sheets(1).Range("A1").CopyFromRecordset Rs oConnect.Close Set Rs = Nothing End Sub
Le champ num_valeur est de type Text dans ma base de données. Telle quelle, la requête ne renvoie rien. En ajoutant des champs de type date, par exemple ou encore varchar, je ne récupère que ces deux colonnes. Je suppose donc que le VBA n'arrive pas à extraire mon champ qui est de type Text.
Je cherche à convertir mon champ dans la requête, j'ai testé les solutions suivantes :
Les deux formulations me renvoie l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Sql = "SELECT CAST(num_valeur as NCHAR) FROM XXX.m5tcyrubi WHERE num_date REGEXP date(now())" ' Ce qui fonctionne lorsque je fais la requête directement sur excel (Données, connexion, etc...) Sql = "SELECT Cstring(num_valeur) FROM XXX.m5tcyrubi WHERE num_date REGEXP date(now())" ' ???
Je ne comprends pas l'erreur, sachant que lorsque je n'essaie pas le cast, je n'ai pas de message d'erreur, je suppose qu'elle apparaît au moment du cast.Erreur d'exécution '-2147217900 (80040e14)':
Erreur Automation
Quelle est la bonne formulation pour cast mon champ, ou, si je me suis trompé dans ma déduction, pourquoi mon champ num_valeur n'est pas récupéré par cette requête ?
Merci par avance de votre aide.
Cordialement,
Teckyl.
Partager