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

Bases de données Discussion :

Valeur de retour de rowCount()


Sujet :

Bases de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Points : 27
    Points
    27
    Par défaut Valeur de retour de rowCount()
    Bonjour,

    j'ai un petit bug bien étrange, lorsque je fais appel à rowCount() j'ai 256 en retour alors que j'ai 292 lignes dans ma table.

    Au début je me suis dis, OK il y a une limitation de taille avec select().

    Mais si je fais une boucle de 0 à 291 tout marche très bien!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    quint16 rowCount = _akeh->getModel()->rowCount();
      debug("There is : " + QString::number(rowCount) + " records.");
     
      for(int i=0; i < 292/*_akeh->getModel()->rowCount()*/; i++)
        {
    ...
        }
    Quelqu'un aurait il une petite explication?

    Merci.
    Cordialement.

    EDIT : Bon j'ai trouvé une infos pas mal qui parle de buffer mémoire qui limite le nombre de ligne à 256 !! Donc ma question : Comment récupérer correctement le bon nombre de ligne dans la table? Et activé les flèches sur le QTableView!

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Vu que vous utilisez la méthode rowCount() et que vous parlez de QtSql, j'imagine que vous utilisez un QSqlTableModel.
    En ce qui concerne le nombre d'élément, c'est bel et bien normal que ça retourne ce nombre d'éléments et non la totalité. Si vous souhaitez récupérer l'intégralité des éléments, vous pouvez exploiter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while(_akeh->getModel()->canFetchMore())
        _akeh->getModel()->fetchMore();
     
    for(int i = 0; i < _akeh->getModel()->rowCount(); ++i)
    {
        // ...
    }
    Cependant, si vous travaillez sur des dizaines de milliers d'entrées, je vous conseillerais plutôt de procéder avec un SELECT COUNT(*) s'il ne s'agit pas de récupérer les informations de chaque champ mais juste le nombre d'entrées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int count = 0;
    QSqlQuery query;
    if (query.exec(SELECT COUNT(*) FROM ... WHERE ... ) && query.next())
        count = query.record().value(0).toInt();
    Bonne journée à vous,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Merci pour la réponse, j'ai opté pour la 2ème solution qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    getSize()
    {    
      QSqlQuery query;
      QString requete = "select COUNT(*) from testTable";
      query.exec(requete);
      query.next();
      return query.value(0).toInt();
    }
    Et qui marche pile poil.
    Cela me semble plus safe que le fetchmore... Mais bon je n'ai pas trop de recul pour le coup.

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

Discussions similaires

  1. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52
  2. fonction operator, valeur de retour
    Par butch dans le forum C++
    Réponses: 21
    Dernier message: 20/09/2004, 10h30
  3. [VB6] Valeur de retour pour une Form
    Par preverse dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/08/2004, 17h16
  4. Valeur de retour d'une procédure externe
    Par elekis dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 16/04/2004, 16h45
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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