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.
Je précise que le model contient exactement le bon nombre d'enregistrement et que les autres tables s'affichent correctement.
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); }
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
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 qrTarif.exec("select designation from tarifs order by designation"); while(qrTarif.next()) ui->cbDesignation->addItem(qrTarif.value(0).toString());
Et celle de la table chargée dans la boucle:
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
Toute les idées sont bonnes à prendre ^^
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'
Partager