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

Bases de données Discussion :

Ouvrir un fichier Access (MDB)


Sujet :

Bases de données

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Points : 126
    Points
    126
    Par défaut Ouvrir un fichier Access (MDB)
    Bonjour,

    Etant obligé de travailler avec une base mdb, je voudrais acceder au fichier c:/base.mdb. il ne veut pas ouvrir le fichier. Voici comment je procede :

    le access.pro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    QT       += core gui\
                sql
     
    TARGET = access
    TEMPLATE = app
     
     
    SOURCES += main.cpp\
            qtaccess.cpp
     
    HEADERS  += qtaccess.h
     
    FORMS    += qtaccess.ui
    le Access.h :

    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
     
    #ifndef QTACCESS_H
    #define QTACCESS_H
     
    #include <QMainWindow>
     
     
    namespace Ui {
        class QtAccess;
    }
     
    class QtAccess : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit QtAccess(QWidget *parent = 0);
        ~QtAccess();
     
    private:
        void read();
        Ui::QtAccess *ui;
    };
     
    #endif // QTACCESS_H
    le access.cpp :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include <QtGui>
     
    #include "qtaccess.h"
    #include "ui_qtaccess.h"
    #include <QSqlDatabase>
    #include <QSqlQuery>
     
     
     
    QtAccess::QtAccess(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::QtAccess)
    {
        ui->setupUi(this);
        read();
    }
    void QtAccess::read()
    {
        QString file = "C:/base.mdb";
        QString table = "2010 03 19_exportse2005";
        QSqlDatabase m_db;
        m_db = QSqlDatabase::addDatabase("QODBC");
        QString dataBaseString = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=" + file;
        m_db.setDatabaseName(dataBaseString);
        if (m_db.open())
        {
            QString command = "SELECT  [2010 03 19_exportse2005].Matricule FROM " + table + " GROUP BY  [2010 03 19_exportse2005].Matricule";
            QStringList list;
            QSqlQuery resultat = m_db.exec(command);
            while (resultat.next())
            {
                list.append(resultat.value(0).toString());
            }
            ui->listWidget->addItems(list);
            m_db.close();
         }
         else
         {
            QMessageBox::critical(this, "Erreur", "Impossible d'ouvrir la base : " + file);
         }
    }
     
    QtAccess::~QtAccess()
    {
        delete ui;
    }
    le fichier est bien en c:\base.mdb, la table s'appelle bien :2010 03 19_exportse2005 et un des champs est bien : Matricule.

    message suivant qui s'affiche :

    QSqlDatabase: QODBC driver not loaded
    QSqlDatabase: available drivers: QSQLITE

    Cordialement

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    Le message d'erreur n'a rien de sibyllin : il te faut installer le plug-in ODBC, soit le compiler. Cf. la doc http://qt.developpez.com/doc/4.7/sql-driver/.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Points : 126
    Points
    126
    Par défaut
    bonsoir,

    je suis sous windows xp ou seven avec qt 4.7.4

    après avoir parcouru beaucoup d'article sur le sujet, il semble ne plus avoir de drivers QODBC ?

    j'ai remplacé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_db = QSqlDatabase::addDatabase("QODBC");
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_db = QSqlDatabase::addDatabase("QSQLITE");
    resultat :
    Plus de message sur QODBC, mais il ne veut toujours pas ouvrir la base. Il va sur "mon" message box : erreur impossible d'ouvrir C:/base.mdb.

    cordialement

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    C'est normal qu'il te râle dessus : demande à ton traducteur français-anglais de te traduire un document en chinois mandarin, cela lui posera un très léger problème. C'est la même chose : tu lui annonces du chinois et tu lui donnes du portugais, il n'apprécie guère. Ta seule solution est de compiler le plug-in ODBC (ou de réécrire un plug-in pour Access, mais j'éviterais franchement).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Points : 126
    Points
    126
    Par défaut
    Bonsoir,

    il te faut installer le plug-in ODBC, soit le compiler!!!!

    installer le plug-in ODBC => a priori introuvable.

    le compiler => j'veux bien compiler mais quoi !!!!
    dans ta doc pour windows il n'y a rien de precis.

    et je confirme que odbc est bien installé sur ma machine. (access 2003 aussi d'ailleur)

    Cordialement

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Ah ?

    How to Build the ODBC Plugin on Windows

    The ODBC header and include files should already be installed in the right directories. You just have to build the plugin as follows:
    cd %QTDIR%\src\plugins\sqldrivers\odbc
    qmake odbc.pro
    nmake

    If you are not using a Microsoft compiler, replace nmake with make in the line above.

    Note: This database plugin is not officially supported for Windows CE.
    Sinon, la différence entre UNIX et Windows, ici, c'est la configuration des chemins, qui est considérée effectuée sous Windows...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Points : 126
    Points
    126
    Par défaut
    bonjour,

    Je te remercie, pour tes reponses, malheureusement je vais jouer "le boulet" jusqu'au bout;

    The ODBC header and include files should already be installed in the right directories. You just have to build the plugin as follows:
    cd %QTDIR%\src\plugins\sqldrivers\odbc
    qmake odbc.pro
    nmake
    Le fichier odbc header et les autres fichiers dépendant doivent déja être installer dans le bon repertoire => ou sont ces fameux fichiers et qu'elles sont leurs noms?

    Sachant que j'ai Qt creator 2.3.0, basé sur Qt 4.7.4, windows xp sp3, et entre autre access 2003.

    Vous n'avez plus qu'a construire le plugin comme suit :
    cd %QTDIR%\src\plugins\sqldrivers\odbc
    => chemin inexistant chez moi !!!

    cd %QTDIR%\src\plugins\sqldrivers\odbc
    qmake odbc.pro
    make
    =>Ces lignes de commande s'executent dans l'invite de commande de windows ?

    Cordialement

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Points : 195
    Points
    195
    Par défaut
    Bonjour,
    tu as au moins les sources de Qt ? sinon il faut les télécharger et là tu auras tout ce dont tu as besoin.

  9. #9
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Citation Envoyé par morinxav1 Voir le message
    Ces lignes de commande s'executent dans l'invite de commande de windows ?
    Oui, tu n'as pas vraiment d'autre choix. Il ne faut pas oublier de lancer la version configurée pour Qt (dans le menu Démarrer, il y a un prompt Qt, qui définit notamment la varialbe d'environnement QTDIR).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  10. #10
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Points : 126
    Points
    126
    Par défaut
    Bonsoir,

    boulet d'un jour boulet toujours ?

    Merci Dourouc05 - pour cette partie ok.

    Pour abdou57; J'ai téléchargé et installé sur 5 ordi differents avec windows xp et windows seven.

    Mais nulle par il n'y a src\plugins\sqldrivers\odbc dans la derniere version en tout cas !!!

    Cordialement

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Points : 195
    Points
    195
    Par défaut
    Bonsoir,
    attention, les sources ne sont pas installés systématiquement avec le sdk.
    il faut passer par (bien sûr après avoir installé le SDK):
    maintenace SDK -> package manager -> miscellaneous -> Qt Sources -> cocher la version désirée -> next

    et laisser installer.

  12. #12
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    avant toutes choses merci beaucoup a abdou57 et dourouc05.

    Résumé (du Boulet) du jour :

    abdou57 :
    tu as au moins les sources de Qt ?
    => j'ai télécharger et installer : qt-everywhere-opensource-src-4.7.4 (pour windows dans mon cas)

    dourouc05 :
    Oui, tu n'as pas vraiment d'autre choix. Il ne faut pas oublier de lancer la version configurée pour Qt (dans le menu Démarrer, il y a un prompt Qt, qui définit notamment la varialbe d'environnement QTDIR).
    => j'ai executer le script avec la version configuré (menu demarrer\Programmes\Qt by Nokia v4.7.4 (MinGW OpenSource)\Qt 4.7.4 Command Prompt:
    cd %QTDIR%\src\plugins\sqldrivers\odbc
    qmake odbc.pro
    make
    => tout c'est bien passé.

    derniere étape :
    je lance mon prog. dans qt et tjours même message :
    QSqlDatabase: QODBC driver not loaded
    il y a un lien a afficher dans mon .pro ?

    cordialement

    Cordialement

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Points : 195
    Points
    195
    Par défaut
    Bonjour,
    si les dll sont générées ( en debug et en release), il faut les copier dans le dossier:
    %QTDIR%\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers

  14. #14
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    Merci a vous deux, ça fonctionne !!!

    Je fais un resumé de la solution :

    Pour exploiter une base access, il faut installer le plug-in ODBC.
    Prérequis :
    1/ il faut installer la sdk (actuellement pour windows : Qt SDK version 1.1.3)
    => http://get.qt.nokia.com/qtsdk/Qt_SDK..._v1_1_3_en.exe

    2/ il faut installer la librairie (actuellement pour windows : Qt librairie 4.7.4)=>http://get.qt.nokia.com/qt/source/qt....7.4-mingw.exe
    !!! indiquer le bon chemin du mingw de la sdk !!!!

    3/ executer le script avec la version configuré (menu demarrer\Programmes\Qt by Nokia v4.7.4 (MinGW OpenSource)\Qt 4.7.4 Command Prompt:
    cd %QTDIR%\src\plugins\sqldrivers\odbc
    qmake odbc.pro
    make

    4/ copier vos dlls odbc dans votre debug et release de votre prog.
    !!! Les seules dll valables sont dans le dossier bin de Qt, et dans le dossier plugins pour les imageformats et compagnie (donc dans chemin de Qt librairie). !!!
    5/ le code :

    le access.pro:
    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
     
     
    QT       += core gui\
                sql
     
    TARGET = access
    TEMPLATE = app
     
     
    SOURCES += main.cpp\
            qtaccess.cpp
     
    HEADERS  += qtaccess.h
     
    FORMS    += qtaccess.ui
    le Access.h :

    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
     
     
    #ifndef QTACCESS_H
    #define QTACCESS_H
     
    #include <QMainWindow>
     
     
    namespace Ui {
        class QtAccess;
    }
     
    class QtAccess : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit QtAccess(QWidget *parent = 0);
        ~QtAccess();
     
    private:
        void read();
        Ui::QtAccess *ui;
    };
     
    #endif // QTACCESS_H
    le access.cpp :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    #include <QtGui>
     
    #include "qtaccess.h"
    #include "ui_qtaccess.h"
    #include <QSqlDatabase>
    #include <QSqlQuery>
     
     
     
    QtAccess::QtAccess(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::QtAccess)
    {
        ui->setupUi(this);
        read();
    }
    void QtAccess::read()
    {
        QString file = "Chemin de votre base.mdb";
        QString table = "Nom de la table";
        QSqlDatabase m_db;
        m_db = QSqlDatabase::addDatabase("QODBC");
        QString dataBaseString = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=" + file;
        m_db.setDatabaseName(dataBaseString);
        if (m_db.open())
        {
            QString command = "SELECT  [Nom de la table].Nom_du_champ FROM " + table + " GROUP BY  [Nom de la table].Nom_du_champ"
            QStringList list;
            QSqlQuery resultat = m_db.exec(command);
            while (resultat.next())
            {
                list.append(resultat.value(0).toString());
            }
            ui->listWidget->addItems(list);
            m_db.close();
         }
         else
         {
            QMessageBox::critical(this, "Erreur", "Impossible d'ouvrir la base : " + file);
         }
    }
     
    QtAccess::~QtAccess()
    {
        delete ui;
    }

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Script pour ouvrir un fichier Access
    Par egphenix dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 23/05/2013, 14h59
  2. Ouvrir un fichier Access (ACCDB)
    Par Kermichou dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2012, 16h43
  3. Ouvrir un fichier access 97 sous access 2003
    Par kroma23 dans le forum Access
    Réponses: 1
    Dernier message: 28/01/2009, 15h07
  4. convertir fichier access MDB en base mysql
    Par ps3user dans le forum Décisions SGBD
    Réponses: 0
    Dernier message: 14/10/2008, 17h38
  5. Impossible d'ouvrir un fichier access
    Par squale32 dans le forum Access
    Réponses: 4
    Dernier message: 13/09/2006, 12h26

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