Put data in TableView after SQl query
- 
I changed assigning QTableView from model to table.
Then I put it intoself.dlg.tableView_5.setModel(table)but it makes an error
TypeError: setModel(self, QAbstractItemModel): argument 1 has unexpected type 'QTableView'
@Karoluss96 said in Put data in TableView after SQl query:
but it makes an error
Would be nice if you would tell us what error it is...
 - 
I put the text of error in a previous post /\
 - 
I put the text of error in a previous post /\
@Karoluss96 The error is quite clear: you can't set QTableView (which is a view) as model...
What @JonB suggested is to use https://doc.qt.io/qt-6/qsqltablemodel.html or https://doc.qt.io/qt-6/qsqlquerymodel.html as model to get data from your SQL database and set that model in self.dlg.tableView_5 - 
OK, now I have at beginning:
q= QSqlQueryModel() table = QSqlTableModel() - 
OK, now I have at beginning:
q= QSqlQueryModel() table = QSqlTableModel()@Karoluss96
Why do you have both aQSqlQueryModeland aQSqlTableModel? Why two models?And you are assigning each of these to a function-local variable now. You will not be able to access these outside of this function, and they may be destroyed when they go out of scope.
 - 
Both I catch in one funtion, so I needn't put them global.
Now I have that:q= QSqlQueryModel() table = QSqlTableModel() self.dlg.tableView_3.show() if con == Zest[0]: sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V" q=query.exec_(sql2) a=table.setQuery(q) self.dlg.tableView_5.setModel(a) print (a)with an error: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'bool'
 - 
Both I catch in one funtion, so I needn't put them global.
Now I have that:q= QSqlQueryModel() table = QSqlTableModel() self.dlg.tableView_3.show() if con == Zest[0]: sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V" q=query.exec_(sql2) a=table.setQuery(q) self.dlg.tableView_5.setModel(a) print (a)with an error: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'bool'
@Karoluss96 said in Put data in TableView after SQl query:
q= QSqlQueryModel()
table = QSqlTableModel()I'm wondering how often we need to write that you are creating local variables which are destroyed as soon as the method finishes?
And did you actually read what @JonB wrote? Again: why do you have QSqlQueryModel AND QSqlTableModel?
Why are you overwriting q here:
q=query.exec_(sql2)?
You should really think more about what you are doing... - 
OK, I read his suggestion, but still don't what is a problem in 'creating local variables which are destroyed as soon as the method finishes' - this variables exist only in this function
q=query.exec_(sql2) come from different function in my app, which execute query in assigned variable, that have the SQL command as a string.
Now the error is little different: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'str'
 - 
OK, I read his suggestion, but still don't what is a problem in 'creating local variables which are destroyed as soon as the method finishes' - this variables exist only in this function
q=query.exec_(sql2) come from different function in my app, which execute query in assigned variable, that have the SQL command as a string.
Now the error is little different: TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'str'
@Karoluss96 said in Put data in TableView after SQl query:
but still don't what is a problem in 'creating local variables which are destroyed as soon as the method finishes'
Simple: your models (q and table) will be destroyed as soon as the method finishes, so your tableView_5 will not show anything.
"q=query.exec_(sql2) come from different function in my app" - don't just copy/paste something without thinking about what you are doing.
"Now the error is little different" - please, if you get an error show also the code causing this error!
 - 
Problem is in last line of this code:
sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V" q=query.exec_(sql2) print (q) c=self.dlg.tableView_5.setModel(q)I don't know why q is converted from string to bool.
If I put in setModel sql2 instead of q it shout that here can be the stringabout sentance: " models (q and table) will be destroyed as soon as the method finishes, so your tableView_5 will not show anything." what do you propose?
 - 
Problem is in last line of this code:
sql2 = "SELECT * FROM ZARZADZANIE.ZAMOWIENIA_WG_STATUS_V" q=query.exec_(sql2) print (q) c=self.dlg.tableView_5.setModel(q)I don't know why q is converted from string to bool.
If I put in setModel sql2 instead of q it shout that here can be the stringabout sentance: " models (q and table) will be destroyed as soon as the method finishes, so your tableView_5 will not show anything." what do you propose?
@Karoluss96 said in Put data in TableView after SQl query:
I don't know why q is converted from string to bool.
Because you copy pasted code without thinking.
What do you think this line of code is doing?q=query.exec_(sql2) - 
It should execute the sql in a different functions eg.
sql9 = 'SELECT * FROM ZARZADZANIE.STATUS_PRZEK_SLO' query.exec_(sql9)It works, but here the result of query (by
while query.next():)
goes to ComboBox not TableViewand earlier query is declared global as:
global query query = QSqlQuery(db)