Bonjour à tous,
J'ai un Excel connecté à une base de données SQL, via un ODBC MariaDB. Aucun souci sur la liaison, tout fonctionne bien.
Toutefois, la requête SELECT * FROM table me renvoie un résultat plus qu'étrange, puisqu'elle double forcément le premier enregistrement et n'affiche pas le dernier.
Exemple:
J'ai une table 'companies', avec 3 enregistrements (idCompany = 1, 2 et 3). Lorsque sur mon visualiseur de BDD j'utilise la requête : SELECT * FROM companies;, je me retrouve avec le résultat suivant :
1 1 2 test 1 123456789 SAS test 2 1 2 test 2 123456789 SAS test 3 1 2 test 3 123456789 SAS test
Ce qui correspond parfaitement aux enregistrements de la table.
Quand je fais cette même requête via VBA, je trouve le résultat suivant :
1 1 2 test 1 123456789 SAS test 1 1 2 test 1 123456789 SAS test 2 1 2 test 2 123456789 SAS test
Sachant que ma requête est :
Si je considère la requête SELECT idCompany FROM companies;, dans ce cas je récupère bien la liste 1, 2 et 3. Le bug apparaît donc uniquement à l'utilisation du SELECT *.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 sqlQuery = "SELECT * FROM companies" rsDB.Open sqlQuery, conDB, adOpenDynamic Do While Not rsDB.EOF For Each result In rsDB.GetRows Debug.Print result Next Loop rsDB.Close
Quelqu'un aurait-il une brillante (ou non) idée pour me dépanner ? J'ai tourné ça dans tous les sens, mais je ne vois vraiment pas comment gérer le problème...
Merci beaucoup !
Belle journée ou soirée,
--- Edit
J'en profite pour préciser que l'ajout de DISTINCT, ou ALL ou autre dans la requête n'y change malheureusement rien...
Et si je demande ORDER BY idCompany DESC, je retrouve le même problème mais inversé, avec 2 fois la ligne id=3, et une fois la ligne id=2. L'enregistrement id=1 n'apparait donc pas...
Partager