crossplatform.ru

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

> Некорректное сохранение "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();
    }


Проблема: изменяю записи и нажимаю баттон "Сохранить". Сохраняет все записи, кроме какой-то одной.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
potkin
  опции профиля:
сообщение 25.8.2010, 16:45
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- potkin   Некорректное сохранение "tableView"   14.8.2010, 23:01
- - Litkevich Yuriy   а что возвращает model->submitAll(); model-...   15.8.2010, 2:20
|- - potkin   Цитата(Litkevich Yuriy @ 15.8.2010, 2:20)...   15.8.2010, 10:46
- - potkin   Есть таблица в БД "answer", которая соде...   25.8.2010, 16:45
- - molchanoviv   Надо показать 2 колонки из 10? Тогда во вьюшке спр...   25.8.2010, 18:26
- - potkin   Спасибо за ответы. Подскажите ещё кое что. Нужен н...   26.8.2010, 9:44
- - molchanoviv   view.selectionModel()->selectedIndexes().at(ном...   26.8.2010, 9:51
- - Litkevich Yuriy   Цитата(potkin @ 26.8.2010, 13:44) Не кати...   26.8.2010, 9:51
- - molchanoviv   Если надо одну строку, то view.setSelectionMode(QA...   26.8.2010, 9:53
- - potkin   molchanoviv, Спасибо всё заработало   26.8.2010, 10:11
- - molchanoviv   Тема переехала в раздел MVC   26.8.2010, 10:58
- - potkin   Продолжаю ... Подскажите, как программно отредакти...   27.8.2010, 15:20
- - Litkevich Yuriy   после селекта, ролбэк не нужен - лишнее. программн...   27.8.2010, 19:19
- - potkin   for(int i=0; i<model->rowCount(...   27.8.2010, 19:35
- - Litkevich Yuriy   Цитата(potkin @ 27.8.2010, 23:35) Мало пр...   27.8.2010, 19:59
- - potkin   Всем спасибо за ответы Продолжаю. Есть Реляционна...   1.9.2010, 12:13


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


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




RSS Текстовая версия Сейчас: 28.12.2024, 9:15