Russian Qt Forum
Ноябрь 23, 2024, 16:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: вставка новой записи  (Прочитано 4524 раз)
crossly
Гость
« : Апрель 01, 2008, 15:48 »

подскажите плиз... как грамотно переопределить insertRow у QSqlQueryModel для вставки новой записи...
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Апрель 01, 2008, 19:25 »

подскажите плиз... как грамотно переопределить insertRow у QSqlQueryModel для вставки новой записи...

Ну для начала у QSqlQueryModel нет функции insertRow. А insertRows  не предназначена для вставки новой записи.

Как работать с моделью написано в ассистенте:

     QSqlQueryModel *model = new QSqlQueryModel;
     model->setQuery("SELECT name, salary FROM employee");
     model->setHeaderData(0, Qt::Horizontal, tr("Name"));
     model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

     QTableView *view = new QTableView;
     view->setModel(model);
     view->show();

Работать надо через SQL запросы, типа

model->setQuery("insert into employee( name, salary ) values ('Petrov', 'sss')");
Записан
crossly
Гость
« Ответ #2 : Апрель 02, 2008, 13:47 »

подскажите плиз... как грамотно переопределить insertRow у QSqlQueryModel для вставки новой записи...

Ну для начала у QSqlQueryModel нет функции insertRow. А insertRows  не предназначена для вставки новой записи.

Как работать с моделью написано в ассистенте:

     QSqlQueryModel *model = new QSqlQueryModel;
     model->setQuery("SELECT name, salary FROM employee");
     model->setHeaderData(0, Qt::Horizontal, tr("Name"));
     model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

     QTableView *view = new QTableView;
     view->setModel(model);
     view->show();

Работать надо через SQL запросы, типа

model->setQuery("insert into employee( name, salary ) values ('Petrov', 'sss')");
insertRows я и имел ввиду, звиняюсь за описку... знаю что не предназанчена для вставки....
я же и спрашиваю как переобпределить...
у меня получилось следующее
Код:
bool Model::insertRows(int row,int count, const QModelIndex & parent )
{

beginInsertRows(parent,row,row+count-1);
QSqlQuery q;
bool ok;
ok=q.exec("insert into debit (d_date,col) values(current_date,0)");
endInsertRows();
refresh();
return ok;
 
}
все бы ничего.... да только при этом добавляется ещё и левая строка в конец... и сбрасываеются все настройки модели (размеры колонок, столбцов и т.д.)... кто подскажет где грабли...?? плиз...
Записан
ритт
Гость
« Ответ #3 : Апрель 02, 2008, 16:07 »

"левая" строка добавляется, т.к. ты сам её и добавляешь (beginInsertRows/endInsertRows)
размеры столбцов НЕ хранятся в модели - это задача вьюхи
Записан
crossly
Гость
« Ответ #4 : Апрель 02, 2008, 16:55 »

"левая" строка добавляется, т.к. ты сам её и добавляешь (beginInsertRows/endInsertRows)
размеры столбцов НЕ хранятся в модели - это задача вьюхи
я по этому и спрашиваю как правильно сделать.... Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.119 секунд. Запросов: 22.