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:
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 QT += core gui\ sql TARGET = access TEMPLATE = app SOURCES += main.cpp\ qtaccess.cpp HEADERS += qtaccess.h FORMS += qtaccess.ui
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 #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 fichier est bien en c:\base.mdb, la table s'appelle bien :2010 03 19_exportse2005 et un des champs est bien : Matricule.
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; }
message suivant qui s'affiche :
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE
Cordialement
Partager