crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Некорректное сохранение "tableView", Не все изменённые записи сохраняет.
potkin
  опции профиля:
сообщение 14.8.2010, 23:01
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

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




Репутация:   0  


users.h
private:
    Ui::Users *ui;
    Glav gl;
    QSqlDatabase db;
    QSqlTableModel *model;


users.cpp
1.Отображение данных.
    db = QSqlDatabase::addDatabase(VarClass::Server);
    db.setHostName(VarClass::HostName);
    db.setDatabaseName(VarClass::DatabaseName);
    db.setUserName(VarClass::UserName);
    db.setPassword(VarClass::Passwor);
    if(db.open())
    {
        model = new QSqlTableModel(this, db);
        model->setTable("users");
        model->setHeaderData(0, Qt::Horizontal, "id");
        model->setHeaderData(1, Qt::Horizontal, "firstname");
        model->setHeaderData(2, Qt::Horizontal, "lastname");
        model->select();
        ui->tVUsers->setModel(model); //Это таблица "tableView"
        ui->tVUsers->resizeColumnsToContents();
        //db.close();
    }

поле id int not nul auto_increment, primary key (id)

2.Сохранение данных
    if(db.open())
    {
        model->submitAll();
    }


Проблема: изменяю записи и нажимаю баттон "Сохранить". Сохраняет все записи, кроме какой-то одной.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.8.2010, 2:20
Сообщение #2


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

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

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




Репутация:   94  


а что возвращает
model->submitAll();
model->lastError()
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 15.8.2010, 10:46
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 15.8.2010, 2:20) *
а что возвращает
model->submitAll();
model->lastError()
?


Вот что:
Цитата
The database reported an error: Lost connection to MySQL server during query QMYSQL3: Unable to reset statement


Что это может быть ???

Сообщение отредактировал potkin - 15.8.2010, 10:47
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 25.8.2010, 16:45
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

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




Репутация:   0  


Есть таблица в БД "answer", которая содержит 10 полей, надо отобразить 2-а из них.
Делаю так:
    model = new QSqlRelationalTableModel();
    model->setTable("answer");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    if (model->select())
    {
       model->setHeaderData(0, Qt::Horizontal, tr("AnswerRU"));
       model->setHeaderData(1, Qt::Horizontal, tr("CorrectnessRU"));

       ui->tableView->setModel(model);
       ui->tableView->resizeColumnsToContents();
    }
    else
    {
        model->database().rollback();
        QMessageBox::warning(this, tr("Cached Table"), tr("The database reported an error: %1").arg(model->lastError().text()));
    }

Отображает все 10 полей.

Сообщение отредактировал potkin - 25.8.2010, 16:53
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 25.8.2010, 18:26
Сообщение #5


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


Надо показать 2 колонки из 10? Тогда во вьюшке спрячь колонки и все. QTableView::hideColumn(int)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 26.8.2010, 9:44
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

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




Репутация:   0  


Спасибо за ответы.
Подскажите ещё кое что.
Нужен номер выбраной строки в Таблице. В нете нашёл только это:
номер_выбраной_строки = view.currentIndex().row();

Не катит :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 26.8.2010, 9:51
Сообщение #7


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


view.selectionModel()->selectedIndexes().at(номер строки в выделении).row()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.8.2010, 9:51
Сообщение #8


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

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

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




Репутация:   94  


Цитата(potkin @ 26.8.2010, 13:44) *
Не катит
данная фраза не информативна.
Что выделил? Что получил в результате? И т.д.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 26.8.2010, 9:53
Сообщение #9


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


Если надо одну строку, то view.setSelectionMode(QAbstractItemView::SingleSelection); а затем view.selectionModel()->selectedIndexes().first().row() только не забудь проверить список на пустоту.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 26.8.2010, 10:11
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

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




Репутация:   0  


molchanoviv,
Спасибо всё заработало :)

Сообщение отредактировал potkin - 26.8.2010, 10:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.3.2024, 8:10