QSqlRelationalTableModel submitAll() ma dati non aggiornati nel DB
Unsolved
Italian
-
Ciao a tutti,
database: PostgreeSQL
os: Windows 10
Qt: 5.14
sono partito dall'esempio "relationaltablemodel" modificando la connessione per puntare al mio db che contiene solamente 2 tabelletramite un modello QSqlRelationalTableModel riesco a visualizzare i dati in una tableView ma quando cerco di modificare un campo quest'ultimo non viene aggiornato anche se la submitAll() mi ritorna ok.
Dialog::Dialog(QWidget *parent) : QDialog(parent) , ui(new Ui::Dialog) { ui->setupUi(this); QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); db.setHostName("127.0.0.1"); db.setPort(5432); db.setDatabaseName("postgres"); db.setUserName("postgres"); db.setPassword("ciao"); bool ok = db.open(); if (!ok) { QMessageBox msgBox; msgBox.setText("Cannot open database. " + db.lastError().text()); msgBox.exec(); } qDebug() << db.databaseName(); qDebug() << db.tables(); model = new QSqlRelationalTableModel; initializeModel(model); ui->tableView->setModel(model); ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView)); ui->tableView->resizeColumnsToContents(); } void Dialog::initializeModel(QSqlRelationalTableModel *model) { model->setTable("tabella_1"); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->setRelation(1, QSqlRelation("tabella_2", "id", "nome")); bool ok_sel = model->select(); if (!ok_sel) { QMessageBox msgBox; msgBox.setText("Cannot query database. " + m_model->lastError().text()); msgBox.exec(); } qDebug() << "total " << model->rowCount(); } void Dialog::on_pushButton_clicked() { bool ok = false; ok = model->database().transaction(); if (!ok) { QMessageBox msgBox; msgBox.setText("Transaction database. " + model->database().lastError().text()); msgBox.exec(); } ok = model->submitAll(); if (ok) { model->database().commit(); } else { QMessageBox msgBox; msgBox.setText("Model submitAll. " + model->lastError().text()); msgBox.exec(); } }
Sembra funzionare tutto, ma modifico dei valori presenti in tabella, poi premo il bottone per aggiornare... mi riappaiono i vecchi dati senza alcun errore... ?!?!
Cosa diavolo sbaglio?
Avete qualche idea?Grazie mille!