Solved Update QSqlTableModel after QSqlQuery executing
-
@Wuzi said in Update QSqlTableModel after QSqlQuery executing:
m_model->selectStatement(); // I don't see the new column here m_model->setQuery(query); m_model->selectStatement(); // The selectStatement is empty //m_model->setTable(m_model->tableName()); m_model->selectStatement(); // query is fine and the new column is shown in the table view
I simply do not believe the "query is fine" in the third
selectStatement()
you show here. I can believe it would be fine if you uncommented thesetTable()
statement, but that is not what you show. Nonetheless is that what you mean??The idea is now to update the query of the model every time I'm executing a new query?
Not for every query, but yes for the very unusual case where you add/remove/alter columns. You have to tell
QSqlTableModel
to re-read the table definition, andsetTable()
should do that.Finally, I cannot imagine why you persist in
m_model->setQuery(query);
. Your query is anALTER TABLE
statement. that is totally unsuitable as the statement for reading data from a table, which should be aSELECT
statement. You don't need to set that (setTable()
will sort it out), but don't set it to some completely unrelated statement. -
@JonB said in Update QSqlTableModel after QSqlQuery executing:
I simply do not believe the "query is fine" in the third selectStatement() you show here. I can believe it would be fine if you uncommented the setTable() statement, but that is not what you show.
@JonB said in Update QSqlTableModel after QSqlQuery executing:
Finally, I cannot imagine why you persist in m_model->setQuery(query);. Your query is an ALTER TABLE statement. that is totally unsuitable
You are right. SELECT is the correct one
Sorry. I played around to check and forgott to enable it again. I edited the code above
Yes I think setTable and does the job. I thought there is a different way doing it.
Thank you all for helping!