Salut tout le monde,
voilà ça fait un baille que je cherche comment établir une liaison en local avec ma base de données.
j'ai une interface faite avec Qt et une base de données en Access, et je veux utiliser l'API ODBC.
Qu'est ce que je dois faire au juste?j'ai essayé plein de truc mais ça n'a pas marché :cry: , maintenant je veux commencer tout à partir de zéro et j'espère bien parvenir à tout terminer dans les temps parce que c'est un travail à rendre pour ce lundi et dont je doit rédiger le rapport.
voilà mo, main si ça peut vous eclaircir
#include <QApplication> #include "FPrincipale.h" #include <QSqlDatabase> int main(int argc, char* argv[]) { QApplication app (argc, argv); FPrincipale fenetre; fenetre.show(); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setHostName("localhost"); db.setDatabaseName("monprojet"); db.setUserName(""); db.setPassword(""); bool ok = db.open(); if (!ok) { QMessageBox::critical(0, qApp->tr("Cannot open database"), qApp->tr("Unable to establish a database connection.n" "This example needs SQLite support. Please read " "the Qt SQL driver documentation for information how " "to build it.nn" "Click Cancel to exit."), QMessageBox::Cancel, QMessageBox::NoButton); return false; } QObject::connect( qApp, SIGNAL(lastWindowClosed()), qApp, SLOT(quit()) ); return app.exec(); }
Q:est ce que je dois configurer l'ODBC ou Qt se charge de tout? [/code]
Hello,
Ben en faite, une base acccess est contenu dans un fichier .mdb.
Si tu ne configures pas une connexion ODBC pour indiquer le chemin de ta base access via le menu sources de données ODBC de l'outil d'administration, il n'y aucune chance que ton programme le trouve tout seul.
Ensuite si ton soucis vient du fait que tu ne sais pas si tu as configuré correctement ta connexion ODBC ou s'il manque qq chose à ton code, tu peux te connecter à ta base access en odbc avec une autre appli, en access par ex.
Tu auras ainsi éliminé une possibilité.
Bonne chance,
Niroken
En premier as-tu vérifié si t'as compilé qt avec le driver correspondant à odbc (pour obtenir le fichier qsqlodbc.dll)
Ensuite dans le fichier ton_projet.pro :
as-tu rajouté la ligne suivante : QT += sql
Que t'es bien le driver dans le répertoire :
dossier_de_l'exe/qslqdrivers/qsqlodbc.dll (valable pour un déploiement de ton application)
Pour le conseil de Niroken je me permet de détailler :
Créer ta source de donnée avec C:/Windows/system32/odcbcad32.exe
et le nom de cette source tu le place en argument de la méthode setDatabaseName("nom_de_la_source");
Tu nous donnerais les erreurs retourné par ton application ça serait également plus facile pour nous de t'aider ;)
merci pour votre aide, j'ai reussi à etablir la liaison avec ma base , c'etait une erreur de parametrage dans le code et on plus dans la configuration de l'ODBC au lieu d'utiliser sources de données système j'ai utiliser user.
mais voilà qu'un autre problème se presente, je veux faire un ajout dans ma base de données, le code est correct à la compil mais aucun dans la base, en effet j'ai fait des QLineEdit et je veux recuperer leurs valeurs, voilà comment j'ai procedé:
si il y a des changements que je dois faire dites le moi.merci
Je n'ai pas lu attententivement la question (manque de temps :oops:)
Mais quand je lis ta phrase, je me demande si tu n'as pas affaire au gag classique: la base de données n'est peut être pas en mode AUTO COMMIT
merci ce problème est reglé mais je rencontre un autre,j'ai fait la connexion avec ma base dans mon main, et maintenant j'essai de faire les requêtes, mais aucun changement dans ma base.Dans la base de données j'ai mis le numéro de client comme clé primaire et elle s'incrémente automatiquemnt mais je sais pas comment faire avec le code je crois que c'est à cause de ça que ça ne marche pas, je veux que ça s'affiche dans la fenêtre de l'ajout sans que l'utilisateur n'y touche.
comment je fais?
Elle n'est pas très claire ta question...
As tu vérifié, comme je te l'ai suggéré, que ta base de données est bien en mode AUTCOMMIT ?
Si non, soit tu la mets dans ce mode, soit tu fait des requêtes dans une transaction.
Il n'y a rien à faire dans le cdoe, puisque c'est automatique justement. C'est la base de données qui va réaliser l'incrémentation.
Ca n'a aucun rapport je pense.
Quel rapport avec le reste de la question ?
salut,
jvoulais savoir comment faire pour recuperer la valeur d'un QLineEdit pour le texte j'ai fait leqlineedit->text() mais pour un entier je sait pas comment faire.
:roll:
La méthode QLineEdit::text() retourne un QString
et dans la classe QString il existe la méthode
int toInt ( bool * ok = 0, int base = 10 ) const
leqlineedit->text().toInt();
salut,
je veux faire un select dans ma base de données mais je sait pas comment faire pour recuperer les données et les afficher sur ecran.
SVP comment je fais?
voilà le code de l'ajout d'un client que je veux afficher les informations à la demande de l'utilisateur de mon application de gestion:
salut kamy86
j'ai vraiment besoin de votre aide sur Qt !! je débute sur Qt et j'ai plein de probleme, et je pense que vous avez le meme sujet que moi!
vous pouvez m'aidez svp!!
Pour répondre à kamy86 et sans doute aussi à spider_tun
Pour récupérer les valeurs d'un select :