IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA-SQL (MariaDB) : Requête 'SELECT * FROM' fonctionne mal


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Par défaut VBA-SQL (MariaDB) : Requête 'SELECT * FROM' fonctionne mal
    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 :
    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
    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 *.

    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...

  2. #2
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 568
    Par défaut
    Bonjour

    Habituellement, j'utilise plutôt la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If Not oRecordset.EOF Then
      Rst.MoveFirst 
      While Not rst.Eof
         ' Code
         rst.MoveNext
      Wend
    else
      Msgbox "Le jeu d'enregistrements est vide"
    End if

    Je n'ai jamais eu de problème avec.

    En espérant que cela aide.

    Bonne soirée

    Pierre Dumas

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Par défaut
    Bonsoir Pierre,

    Merci pour ton retour et le temps que tu as pris pour répondre à mon problème !

    Malheureusement, même en ré-écrivant mes lignes de cette manière, rien n'y fait, les résultats restent incorrects.
    Ce qui est étrange c'est que via une connexion Access, aucun souci. Je n'ai rencontré ce problème qu'aujourd'hui avec l'utilisation d'une base MariaDB...

    Le problème reste donc non résolu aujourd'hui. Evidemment, une solution serait de récupérer via 'SELECT idCompany FROM companies' la liste de tous les idCompany, puis boucler dessus pour récupérer les informations, mais c'est moins optimal en terme de temps, et j'avoue que la curiosité me pousse à comprendre le problème de ma requête actuelle...

Discussions similaires

  1. [AC-2007] Requête "SELECT" ne fonctionne pas en VBA
    Par MatAllwhite dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 03/07/2013, 13h43
  2. SQL Problème requête SELECT
    Par Seth_75 dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2009, 15h02
  3. Réponses: 1
    Dernier message: 04/03/2007, 15h40
  4. [SQL Server 2000] Select from @variable
    Par chorokari dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/12/2006, 12h58
  5. [SQL] Problème requête SELECT
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 04/07/2006, 23h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo