Problème de récupération de données avec SQLITE
Mourad2009B
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
Mourad2009B Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
Mourad2009B Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous
Mon problème est le suivant :
Je développe sous windows seven en C++ et Qt
J'utilise QtCreator comme IDE.
Mais mon problème n'a pas vraiment de lien avec ces outils.
En fait mon problème est que j'ai créé 3 tables sous SQLITE
Ensuite j'insère les données dans les trois table à coup de INSERT (une requête par table)
Pour la récupération, j'ai le problème suivant :
Si je veux récupérer une facture avec un client je fais la requête suivante :
modelRequetteTotale->setQuery(requetteTotale );</code>
ensuite je récupère mes données comme suite :
Etc etc...
C'est à dire qu'il a qu'une seule entrée de la 1ere table qui correspond à une seule entrée de la 2eme table. Jusqu'au là il n y a aucun problème
Quand je fait une requête de ce genre :
requetteTotale = QString("SELECT * FROM table_clients INNER JOIN table_facture_ventes ON table_clients.id = table_facture_ventes.id_client WHERE table_facture_ventes.numero_facture ='"+ QString::number(intNumeroFacture)+"'");
Or dans la table « table_references_ventes » il y a plusieurs références qui correspondent à une seule entrée des autres table, c'est à dire que 2 références peuvent correspondre à 1 seule client ou à une seule facture, alors comment faire pour récupérer toutes les références
J'espère être clair dans l'exposition de mon problème
Merci d'avance à tous
Mon problème est le suivant :
Je développe sous windows seven en C++ et Qt
J'utilise QtCreator comme IDE.
Mais mon problème n'a pas vraiment de lien avec ces outils.
En fait mon problème est que j'ai créé 3 tables sous SQLITE
//On prépare la requette pour la création de la table "table_clients" QString requetteCreerTableClients = "CREATE TABLE IF NOT EXISTS table_clients (\"id\" INTEGER PRIMARY KEY , \"civilite_client\" NUMERIC, \"nom_client\" TEXT , \"prenom_client\" TEXT , \"numero_client\" TEXT, \"type_voie_client\" NUMERIC, \"nom_rue_client\" TEXT, \"code_postal_client\" TEXT , \"ville_client\" TEXT , \"pays_client\" TEXT, \"tel_mobile_client\" TEXT , \"tel_fixe_client\" TEXT) "; //On prépare la requette pour la création de la table "table_facture_ventes" QString requetteCreerTableFactureVentes = "CREATE TABLE IF NOT EXISTS table_facture_ventes (\"id\" INTEGER PRIMARY KEY , \"id_client\" NUMERIC, \"type_de_facture\" NUMERIC , \"numero_facture\" NUMERIC, \"numero_classement\" NUMERIC , \"date_de_facture\" TEXT, \"livraison\" NUMERIC , \"remise\" NUMERIC) "; //On prépare la requette pour la création de la table "table_references_ventes" QString requetteCreerTableReferencesVentes = "CREATE TABLE IF NOT EXISTS table_references_ventes (\"id\" INTEGER PRIMARY KEY , \"numero_facture\" NUMERIC, \"reference_produit\" NUMERIC) "; //si la table n'est pas créée on affiche un message if(!query.exec(requetteCreerTableClients)) { QMessageBox::warning(this,tr("Attention"),tr("La table \"table_generale_brute\" n'a pas était créée") + query.lastError().text()); return; } //si la table n'est pas créée on affiche un message if(!query.exec(requetteCreerTableFactureVentes)) { QMessageBox::warning(this,tr("Attention"),tr("La table \"table_generale_brute\" n'a pas était créée") + query.lastError().text()); return; } //si la table n'est pas créée on affiche un message if(!query.exec(requetteCreerTableReferencesVentes)) { QMessageBox::warning(this,tr("Attention"),tr("La table \"table_generale_brute\" n'a pas était créée") + query.lastError().text()); return; }
Ensuite j'insère les données dans les trois table à coup de INSERT (une requête par table)
Pour la récupération, j'ai le problème suivant :
Si je veux récupérer une facture avec un client je fais la requête suivante :
requetteTotale = QString("SELECT * FROM table_clients INNER JOIN table_facture_ventes ON table_clients.id = table_facture_ventes.id_client WHERE table_facture_ventes.numero_facture ='"+ QString::number(intNumeroFacture)+"'"); QSqlQueryModel *modelTableGe<code>nerale = new QSqlQueryModel(this);
modelRequetteTotale->setQuery(requetteTotale );</code>
ensuite je récupère mes données comme suite :
QString donne = modelRequetteTotale- = >record(0).value("reference").toString(); QString donne1 = modelRequetteTotale- = >record(0).value("ville_client ").toString(); QString donne2 = modelRequetteTotale->record(0).value("date_de_facture ").toString();
Etc etc...
C'est à dire qu'il a qu'une seule entrée de la 1ere table qui correspond à une seule entrée de la 2eme table. Jusqu'au là il n y a aucun problème
Quand je fait une requête de ce genre :
requetteTotale = QString("SELECT * FROM table_clients INNER JOIN table_facture_ventes ON table_clients.id = table_facture_ventes.id_client WHERE table_facture_ventes.numero_facture ='"+ QString::number(intNumeroFacture)+"'");
Or dans la table « table_references_ventes » il y a plusieurs références qui correspondent à une seule entrée des autres table, c'est à dire que 2 références peuvent correspondre à 1 seule client ou à une seule facture, alors comment faire pour récupérer toutes les références
J'espère être clair dans l'exposition de mon problème
Merci d'avance à tous
A voir également:
- Problème de récupération de données avec SQLITE
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Logiciel de récupération de données - Guide
- Convertisseur récupération de texte - Guide
- Trier des données excel - Guide