IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Requete SQL avec parametres valeurs QComboBox [QtGui]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut Requete SQL avec parametres valeurs QComboBox
    Bonjour,

    Je continu toujours avec mon application, parmi mes fonctions, c'est la comparaison des valeurs pour deux périodes (mois et mois-1)
    lorsque j’exécute la requête dans l'éditeur de SQLITE3 le résultat est affiché comme je le voulais :

    Ci-dessous le requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE VIEW tmp_comparaison AS SELECT ident, intitule,
                               SUM(CASE WHEN periode ='2021-03' THEN montant ELSE 0 END) '2021-03',
                               SUM(CASE WHEN periode ='2020-03' THEN montant ELSE 0 END) '2020-03'
                               FROM factures
                               WHERE periode in ('2021-03', '2020-03')
                               GROUP BY ident

    J'ai voulu paramétré cette requête en utilisant deux combobox, le premier pour la période Mois et l'autre Mois-1 et afficher le résultat sur un tableview.
    Le problème, le tableau est vide !!!!

    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
    mois = self.ui.cb_mois.currentText()
    mois_ant = self.ui.cb_mois_ant.currentText()
     
                requete = QSqlQuery()
                requete.prepare('''CREATE VIEW tmp_comparaison AS SELECT ident, intitule,
                    SUM(CASE WHEN periode =:mois THEN montant ELSE 0 END) :mois,
                    SUM(CASE WHEN periode =:mois_ant THEN montant ELSE 0 END) :mois_ant
                    FROM factures
                    WHERE periode in (:mois, :mois_ant)
                    GROUP BY reference
                    ORDER BY identt''')
                requete.bindValue(":mois", mois)
                requete.bindValue(":mois_ant", mois_ant)
                requete.exec()
     
            self.model_comparaison_ventes = QSqlRelationalTableModel()
            self.model_comparaison_ventes.setTable("tmp_comparaison")
            self.model_comparaison_ventes.select()
            self.ui.tableView_comparaison.setModel(self.model_comparaison_ventes)
    Je ne vois pas où est le problème, au secours

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Si ce code s'exécute dès le démarrage je ne serais pas étonné que les comboBox ne renvoient rien.

    Ajoute un print(mois, mois_ant) pour voir.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Bonjour VinsS,

    J'ai rajouté print(mois, mois_ant) avant la requête et après, il s'affiche les valeurs sélectionnées dans les deux combobox. Seulement, le résultat est le même.

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Dans ce cas on peut soupçonner que la syntaxe de la requête fasse défaut.

    Tu aurais peut-être plus de réponses sur le forum SQL: https://www.developpez.net/forums/f4/bases-donnees/

    Edit: Je viens de voir dans ta requête: ORDER BY identt, le double t final est volontaire ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Salut,

    Je l'ai corrigé, le problème persiste.
    Je voudrais poser une question : Est ce que l'insertion des variables mois et mois_ant qui sont de type CHAR
    dans la requête sous la forme :mois et :mois_ant est juste ? c-a-d avec les deux points (:)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Ce qui me semble étrange est que l'appel à QSqlQuery se fasse sans lui indiquer la base de données... et que les appels à prepare et exec ne testent pas les valeurs de retour.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tabledatasource et requete sql avec parametres
    Par aidonsnous dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/12/2013, 09h29
  2. requete SQL avec parametre de la méthode
    Par flora806 dans le forum JDBC
    Réponses: 6
    Dernier message: 11/06/2009, 16h59
  3. [VBA]Requete SQL avec parametre numérique
    Par Pitou5464 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/09/2006, 10h33
  4. Probleme de requete SQL avec la valeur NULL
    Par samyghan dans le forum Installation
    Réponses: 8
    Dernier message: 12/03/2006, 17h24
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo