Accès à une base de données Access sécurisée par mot de passe
Bonjour,
Je souhaite à mettre en place une BDD type fichier avec MS Access et réaliser son client sous Qt.
Je voudrai que chaque utilisateur possède un compte sur cette BDD et qu'il y ai plusieurs types de compte (Administrateur, lecture seule, lecture / écriture).
J'ai donc créé un "groupe de travail" sous Access pour verrouiller la base. Donc quand je me connecte sur la base via Access, il n'y a pas de problème, on me demande bien l'utilisateur et le mot de passe, les différents droits des utilisateurs sont bien pris en compte, etc.
Je cherche à me connecter à cette BDD via mon client créé, j'utilise donc le driver ODBC et y renseigne les éléments de connexion d'un utilisateur du groupe. Mon client me donne le message d'erreur suivant :
Code:
1 2 3
|
[Microsoft][Pilote ODBC Microsoft Access] Vous n'avez pas l'autorisation requise pour utiliser l'objet '(Inconnu)'. Demandez l'autorisation requise à votre administrateur système ou à la personne ayant créé cet objet.
QODBC3 : Unable to connect |
Par contre quand je verouille la BDD par un simple MDP sans utiliser de "groupe de travail" je peux renseigner celui-ci dans mon client et la connexion est établie , mais ce n'est pas ce que je cherche ...
Je met mon code pour me connecter mais je ne pense pas que le problème vienne de là.
Code:
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
|
#include <QDebug>
#include <QtSql>
#include <QSqlError>
#include "MessageBoxes.h"
#include<QMessageBox>
void successful_connection();
void failed_connection(QSqlDatabase);
bool createConnection(QString id, QString mdp)
{
bool found = 0;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=TableUsers.mdb");
qDebug() << "Database name : " << db.databaseName();
db.setUserName(id);
qDebug() << "User name : " << db.userName();
db.setPassword(mdp);
qDebug() << "Password entered";
if(!db.open())
{
qDebug() << "Erreur";
found = 0;
failed_connection(db);
}
if(db.open())
{
//qDebug() << "Vous etes maintenant connecté a " << db.hostName();
successful_connection();
found = 1;
}
return found;
} |
Si quelqu'un a déjà rencontré ce probléme ou a tout simplement une idée, je suis preneur!
Merci.