PDA

View Full Version : QSqlTableModel



raphaelf
3rd March 2006, 14:22
Hi everybody,
I am searching examples how to use insertRow(); removeRow(); and updateRowInTable();
Can i find somewhere examples?
for display a table i havent problem. But how to construct and use insertRow(); removeRow(); and updateRowInTable();



QString table = ui.tabelle_le->text();
QSqlTableModel *model = new QSqlTableModel;
model->setTable(table);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();


ui.tableView->setModel(model);
ui.tableView->show();


If somebody have some finish examples why not :p

Thanks again :rolleyes:

wysota
3rd March 2006, 18:23
Hmm... what exactly you don't know? In case of SQL models, insertRow() does an INSERT call and removeRow() does a DELETE call. Guess what the third method does ;)

raphaelf
4th March 2006, 11:03
Hi wysota,
I know what should do insertRow(); removeRow(); and updateRowInTable(); ;)
But i dont know how to use it.

With this code i am able to view the values of my table:


QString table = ui.tabelle_le->text();
QSqlTableModel *model = new QSqlTableModel;
model->setTable(table);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();


ui.tableView->setModel(model);
ui.tableView->show();


And now i would like to insert a new Row or update a value or delete a Row.
And my problem is:
How to use:
bool QAbstractItemModel::insertRow ( int row, const QModelIndex & parent = QModelIndex() )
bool QAbstractItemModel::removeRow ( int row, const QModelIndex & parent = QModelIndex() )
I have not found any examples how to use it.
In the passt i use this for create a new row:


QSqlQuery insert("insert into.....");
insert.exec()..
..


I would like to use :


bool QAbstractItemModel::insertRow ( int row, const QModelIndex & parent = QModelIndex() )
bool QAbstractItemModel::removeRow ( int row, const QModelIndex & parent = QModelIndex() )


Can somebody show me how to use it?

wysota
4th March 2006, 11:51
model->insertRow(-1, QModelIndex());
model->setData(model->index(model->rowCount()-1, 0), "somedata");

But it's better to do it this way:

QSqlRecord rec = model->record();
rec.setValue("name", "John Doe");
rec.setValue("age", 18);
model->insertRecord(-1, rec);

raphaelf
4th March 2006, 12:35
Hi wysota
It works :p
Thanks to open my mind! I am allways happy when i have the possibility to stude some examples
For insert new Values:


QString table = ui.tabelle_le->text();
QSqlTableModel *model = new QSqlTableModel;
model->setTable(table);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();

QSqlRecord rec = model->record();
ui.tableView->setModel(model);
ui.tableView->show();

//I have auto increment at this table, so i dont have to give the new id

rec.setValue("status", "test");
model->insertRecord(-1, rec);


For Update a Value it works now like this:


QString table = ui.tabelle_le->text();
QSqlTableModel *model = new QSqlTableModel;
model->setTable(table);
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->select();
ui.tableView->setModel(model);
ui.tableView->show();