crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSqlTableModel и добавление записи
kibsoft
  опции профиля:
сообщение 11.2.2010, 21:44
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Есть пустая модель(соединенная с пустой таблицей), мне нужно добавить туда несколько записей..
Делаю так: tableModel->insertRecord(-1,record), но все данные записываются в одну и ту же ячейку...т.е. строки не добавляются. Пробовал insertRow(), но данные также записываются в одну ячейку..Как правильно добавлять записи в модель?
P.S. Сколько будет записей я точно не знаю, и подсчитать не могу.

С добавление разобрался, но как делать поиск по модели? indexOf какой-нибудь..или setFilter() надо использовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2010, 21:51
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kibsoft @ 12.2.2010, 0:44) *
tableModel->insertRecord(-1,record)
а почему -1, а не rowCount()??

Ну а вообще судя по описанию из асистента, получается лажа. В БД принципиально нельзя вставить запись в произвольное место.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 11.2.2010, 21:52
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата(Litkevich Yuriy @ 11.2.2010, 22:51) *
Цитата(kibsoft @ 12.2.2010, 0:44) *
tableModel->insertRecord(-1,record)
а почему -1, а не rowCount()??

Ну а вообще судя по описанию из асистента, получается лажа. В БД принципиально нельзя вставить запись в произвольное место.

Да я понял что лажа :) я написал, что уже разобрался как делать, только не знаю как искать по модели :( все записи перебирать чтоли?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2010, 21:59
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


ну я полностью програмно не делал, я програмно пустые строчки добавлял так:
void TableEditor::SlotInsert()
{
    model->database().transaction();
    int cnt=model->rowCount();
    
    if (!model->insertRows(cnt,1))
    {
         QMessageBox::critical(this, tr("БД"),
                             tr("Вставка строки вызвала следующую ошибку:\r\n %1")
                             .arg(model->lastError().databaseText()));
        
    }

}
а затем пользователь в водит данные сам и тычет сохранить, сохранял так:
void TableEditor::SlotSubmit()
{
    model->database().transaction();
    if (model->submitAll())
    {
        model->database().commit();
        model->select();
        // Опять применить и отмена не активны
        BtnDis();    
    }
    else
    {
        model->database().rollback();
        QMessageBox::critical(this, tr("Ошибка"),
                             tr("Сообщение БД:\r\n %1")
                             .arg(model->lastError().databaseText()));
    }
}


kibsoft, для отдельного вопроса, не соответствующего заголовку, создай самостоятельную тему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.1.2025, 4:27