Problème lors d'une insertion avec QSqlRelationalTableModel
Bonjour,
J'ai un QTableView relié à un QSqlRelationalTableModel.
Pour l'affichage des données déjà présente dans la base, il n'y a aucun soucis.
Par contre, lors de l'insertion, le champs qui est une clé étrangère est systématiquement à 0.
Je n'ai aucune erreur retournée après l'insertion
Voici le code incriminé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
QSqlRelationalTableModel m_model = new QSqlRelationalTableModel(0,baseMySql);
m_model->setTable("Parametres_Com");
m_model->setRelation(PARAMCOM_ID_TX_TRANSMISSION,QSqlRelation("Taux_Transmission","id_tx_transmission","taux_transmission"));
m_model->setSort(PARAMCOM_ID, Qt::AscendingOrder);
m_model->select();
QSqlRecord enregistrement = m_model.data()->record();
enregistrement.setValue(PARAMCOM_ID_TX_TRANSMISSION,this->m_idTxTransmission);
enregistrement.setValue(PARAMCOM_ADRESSE,this->ui->lineEdit_Adresse->text());
enregistrement.setValue(PARAMCOM_NB_BITS_TRANSMISSION,this->ui->cb_Nb_Bits_Transmission->currentIndex());
enregistrement.setValue(PARAMCOM_NB_BITS_STOP,this->ui->cb_Nb_Bits_Stop->currentIndex());
enregistrement.setValue(PARAMCOM_CONTROLE_FLUX,this->ui->cb_Type_Controle_Flux->currentIndex());
enregistrement.setValue(PARAMCOM_PARITE,this->ui->cb_Type_Parite->currentIndex());
for(int i=0;i<enregistrement.count();i++)
qDebug()<<enregistrement.fieldName(i)<<" : "<<enregistrement.value(i);
bool ok = m_model->insertRecord(-1,enregistrement); // Tjrs == true |
Voici la sortie :
Code:
1 2 3 4 5 6 7 8 9 10
|
Connexion effectuee
"id_parametres_com" : QVariant(, ) // Id auto-incrémenté
"taux_transmission" : QVariant(int, 13) // Champs qui sera à zéro même s'il contient une valeur
"adresse" : QVariant(QString, "0303")
// Le reste sont des valeurs par défaut
"nb_bits_transmission" : QVariant(int, 0)
"nb_bits_stop" : QVariant(int, 0)
"controle_flux" : QVariant(int, 0)
"type_parite" : QVariant(int, 0) |
Et la structure de la table :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
CREATE TABLE IF NOT EXISTS `TAM_V3`.`Parametres_Com` (
`id_parametres_com` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`id_tx_transmission` TINYINT UNSIGNED NOT NULL ,
`adresse` VARCHAR(10) NULL ,
`nb_bits_transmission` TINYINT UNSIGNED NULL DEFAULT 0 ,
`nb_bits_stop` TINYINT NULL DEFAULT 0 ,
`controle_flux` TINYINT NULL DEFAULT 0 ,
`type_parite` TINYINT NULL DEFAULT 0 ,
PRIMARY KEY (`id_parametres_com`) ,
CONSTRAINT `fk_param_com_tx_trans`
FOREIGN KEY (`id_tx_transmission` )
REFERENCES `TAM_V3`.`Taux_Transmission` (`id_tx_transmission` )
ON DELETE RESTRICT
ON UPDATE CASCADE) |
Le QSqlRecord contient donc bien les données, mais le champs "id_tx_transmission" est toujours à zéro dans la base de données.
Merci d'avance pour votre aide