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 :

QSqlTableModel/QTableView : table vide avec une compilation release


Sujet :

Bases de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 124
    Points : 559
    Points
    559
    Par défaut QSqlTableModel/QTableView : table vide avec une compilation release
    Bonjour à tous,

    je commence un peu à désespérer face à un comportement assez étrange depuis quelque jours sur une de mes pages. Je souhaite afficher le contenu d'une table MySQL dans un QTableView en utilisant un QSqlTableModel, rien de bien extraordinaire.

    Le souci c'est que ca fonctionne très bien avec une compilation debug, la table se remplis correctement. Une fois compilée en release la table reste désespérément.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    FormGestionTarif::FormGestionTarif(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::FormGestionTarif)
    {
        ui->setupUi(this);
     
        db = QSqlDatabase::database();
     
        model = new QSqlTableModel();
        model->setEditStrategy(QSqlTableModel::OnFieldChange);
        model->setTable("histo_tarifs");
        model->select();
     
        model->setHeaderData(2,Qt::Horizontal,"Désignation");
        model->setHeaderData(3,Qt::Horizontal,"Durée");
        model->setHeaderData(4,Qt::Horizontal,"Unitée");
        model->setHeaderData(5,Qt::Horizontal,"Prix HT");
     
        ui->tvTarif->hideColumn(0); // on cache les colonne inutile
        ui->tvTarif->hideColumn(1); 
     
        QSqlQuery qrTarif;
        qrTarif.exec("select designation from tarifs order by designation");
        ui->cbDesignation->clear();
        while(qrTarif.next())    
             ui->cbDesignation->addItem(qrTarif.value(0).toString());
     
        ui->tvTarif->setModel(model);
    }
    Je précise que le model contient exactement le bon nombre d'enregistrement et que les autres tables s'affichent correctement.

    De plus cette boucle fonctionne correctement en release mais le programme crash avec une compilation debug (pas de chance c'est le contraire ^^) avec ce message ASSERT: "idx >= 0 && idx < s" in file ../../include/QtCore/../../src/corelib/tools/qvarlengtharray.h, line 110

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    qrTarif.exec("select designation from tarifs order by designation");    
    while(qrTarif.next())    
             ui->cbDesignation->addItem(qrTarif.value(0).toString());
    Voici la structure de la table chargée dans le QTableView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	`id` INT(10) NOT NULL AUTO_INCREMENT,
    	`id_tarif` INT(10) NULL DEFAULT NULL,
    	`duree` FLOAT NULL DEFAULT '0',
    	`unite_duree` CHAR(1) NULL DEFAULT '0',
    	`prix_ht` FLOAT NULL DEFAULT '0',
    	`id_TVA` INT(1) NULL DEFAULT '0',
    	`dateheuredb` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    	`dateheurefn` TIMESTAMP NULL DEFAULT NULL
    Et celle de la table chargée dans la boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	`id` INT(10) NOT NULL AUTO_INCREMENT,
    	`designation` VARCHAR(50) NULL DEFAULT '0'
    Toute les idées sont bonnes à prendre ^^

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut


    Ton application trouve-t-elle bien le plug-in MySQL en mode release (il n'est peut-être compilé qu'en debug) ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 124
    Points : 559
    Points
    559
    Par défaut
    oui oui le plugin qsqlmysql4.dll est compilé en debug et en release, d'ailleurs d'autres tables se chargent et s'affichent sans problèmes

  4. #4
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 2 315
    Points : 26 889
    Points
    26 889
    Par défaut
    Si les autres tables marchent normalement en mode release, alors vérifie si les paramètres de compilation en mode release de ton projet ne sont pas modifiés??
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/04/2013, 12h45
  2. Réponses: 2
    Dernier message: 17/10/2006, 10h54
  3. [T-SQL] Colonnes d'une table appelées avec une variable
    Par Deedoo2000 dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 25/09/2006, 15h18
  4. Réponses: 1
    Dernier message: 13/06/2006, 18h57
  5. Table vide dans une BD
    Par Riouxe21 dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 19h48

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