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