Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Izi от Январь 29, 2016, 18:23



Название: QSqlTableModel, setRecord()
Отправлено: Izi от Январь 29, 2016, 18:23
Доброго времени суток.
Помогите разобраться с проблемой.
Есть таблица sql
Код
SQL
CREATE TABLE tablex(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(50) NOT NULL);
Создаю модель которая работает с этой таблицей.
Код
C++ (Qt)
...
srand(QDateTime::currentMSecsSinceEpoch());
 
model=new QSqlTableModel(this);
   model->setTable("tablex");
   model->select();
   model->setEditStrategy(QSqlTableModel::OnFieldChange);
   view=new QTableView();
   view->setModel(model);
...
 
По нажатии на кнопку выполняется следующий слот
Код
C++ (Qt)
void MainWindow::on_pushButton_clicked()
{
 
QSqlRecord rec=model->record(0);
 
   int i=rand() %1500;
 
   QString str=QString::number(i);
   rec.setValue("name",str);
   qDebug()<<model->setRecord(0,rec);
   qDebug()<<model->lastError().text();
}
 

Проблема в следующем: при первом нажатии на кнопку, запись устанавливается в модель и также добавляется в базу данных, т.е. в таблицу. При повторном нажатии на кнопку, запись устанавливается в модель, но уже не добавляется базу данных(таблицу), т.е. не сохраняется там. Вот что выводит qDebug:
Код
C++ (Qt)
true            //1 click
" "              //1 click
false                                   //2 click
" No Fields to update"            //2 click
false                                   //3 click
" No Fields to update"            //3 click
false                                   //4 click
" No Fields to update"            //4 click

В чем может быть проблема ? Спасибо.