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 :

QtSql, TableModel et DataWidgetMapper...


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Par défaut QtSql, TableModel et DataWidgetMapper...
    Bonjour,

    je crée une interface python QT (Sous XP, Python 2.5) me permettant simplement d'accéder à une table d'une DB Sqlite.
    Je fais afficher mes données dans des champs (et non une table)

    Dans ma classe j'ai ceci :
    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
     
            ...
            self.model=QtSql.QSqlTableModel(self)
            self.model.setTable("Clients")
            self.model.select()
            #print self.model.size()
            self.mapper = QtGui.QDataWidgetMapper(self)
            self.mapper.setSubmitPolicy(QtGui.QDataWidgetMapper.ManualSubmit)
            self.mapper.setModel(self.model)
            self.mapper.addMapping(self.lineEdit_Ref, 1)
            self.mapper.addMapping(self.lineEdit_NomAbr, 2)
            self.mapper.addMapping(self.lineEdit_Nom1, 3)
            self.mapper.addMapping(self.lineEdit_Nom2, 4)
            self.mapper.addMapping(self.lineEdit_Adresse, 5)
            ....
    J'accède bien à mes données, mais jusqu'au 256e record et self.model.rowCount() me renvoie 256! Alors que j'ai bien 2000 records.

    Après recherche, je trouve sur Google que la classe QSqlTableModel possede une methode fetchmore() permettant d'acceder à la prochaine suite de 256 records... et ne pas revenir en arriere semble t il..
    Il semble que TableModel et DataWidgetMapper convienne mieux pour remplir une table , et nom des champs comme je le fais (par record).

    Le but de l'utilisation de ces classes etait de lier simplement les champs de ma fenêtre aux données de la table.
    Je me remets donc en question sur mon interface ,et vous demande comment je peux faire pour éviter de faire une requete (QSqlQuery) qui boucle et des setText() à tour de bras.

    En gros comment faites vous dans vos projets avec PyQT et le Sql dans le cas de formulaire pour faire le lien entre les data et les champs d'une fenêtre?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Par défaut
    Bon,

    j'avais mal compris... la methode fetchMore en bouclant permet d'obtenir l'ensemble des enregistrements de ma requete. Mais qui peut me dire l'interet de cette methode??

    merci

Discussions similaires

  1. [SWING] TableModel hétérogène
    Par Benav dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 21/03/2006, 15h58
  2. [Java Swing]JButton avec TableModel
    Par dim_italia dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/02/2006, 21h04
  3. Probleme d'affichage d'une JTable utilisant un tablemodel
    Par garfieldcut dans le forum Composants
    Réponses: 2
    Dernier message: 13/01/2006, 11h58
  4. problème avec TableModel !!!
    Par mehdi82 dans le forum Composants
    Réponses: 14
    Dernier message: 08/12/2005, 11h28
  5. un problème avec le tableModel !!!
    Par mehdi82 dans le forum Composants
    Réponses: 9
    Dernier message: 15/11/2005, 15h23

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