crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Обновление таблицы через QTableView.
User_3
  опции профиля:
сообщение 12.2.2010, 13:16
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 27.8.2009
Пользователь №: 1027

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




Репутация:   0  


Извините что поднял избитую тему, но никак не могу понять - каким же образом можно сохранять изменения в полях таблицы, путём редактирования QTableView?

Например есть такая таблица:

TableModel->setTable("registered");
TableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
TableModel->select();


Ну и дальше она размещается на виджете, и вот хочу изменить значения полей в таблице редактированием ячейки в QTableView, но они меняются только в QTableView, а в самой бд всё остаётся неизменно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2010, 13:49
Сообщение #2


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

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

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




Репутация:   94  


Например, так
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
User_3
  опции профиля:
сообщение 12.2.2010, 15:25
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 27.8.2009
Пользователь №: 1027

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




Репутация:   0  


Извините, я неправильно выразился.
Мне нужно изменить именно значения в ячейках таблицы. Т.е. с клавиатуры ввести новое значение прямо в ячейку, предварительно дважды щёлкнув по ней курсором.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2010, 16:55
Сообщение #4


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

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

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




Репутация:   94  


Цитата(User_3 @ 12.2.2010, 18:25) *
Т.е. с клавиатуры ввести новое значение прямо в ячейку, предварительно дважды щёлкнув по ней курсором.
не понял проблемы. в чём она?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 12.2.2010, 17:11
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

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




Репутация:   9  


Цитата(User_3 @ 12.2.2010, 13:16) *
вот хочу изменить значения полей в таблице редактированием ячейки в QTableView, но они меняются только в QTableView, а в самой бд всё остаётся неизменно

Я думаю ключевая фраза эта? Тогда нужно вызывать метод submitAll(), потому как у тебя стоит политика редактирования QSqlTableModel::OnManualSubmit.
Почитай в ассистенте про эти вещи получше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2010, 17:16
Сообщение #6


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

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

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




Репутация:   94  


Цитата(MoPDoBoPoT @ 12.2.2010, 20:11) *
Почитай в ассистенте про эти вещи получше.
ну и мою ссылку, в которой всё это уже "накодено".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
User_3
  опции профиля:
сообщение 16.2.2010, 17:43
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 27.8.2009
Пользователь №: 1027

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 12.2.2010, 20:49) *
Например, так

За ссылку спасибо, но видимо у меня проблемы с кодировкой в комментах:

CODE
Версия программы: 1.0
* Framework: Qt 4.3.2
* Компилятор: GCC (mingw-gcc rev4.3.2)
* Дата начала: 20.03.2008
* Последнее обновление: 25.03.2008
* Автор: Литкевич Юрий Р˜РІР°РЅРѕРІРёС‡
* Support E-mail: lit-uriy-A-yandex.ru
* Лицензия: GNU GPLv2
*
* Описание:


Не подскажешь как решить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.2.2010, 19:04
Сообщение #8


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

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

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




Репутация:   94  


Цитата(User_3 @ 16.2.2010, 20:43) *
Не подскажешь как решить?
UTF-8
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
User_3
  опции профиля:
сообщение 17.2.2010, 14:22
Сообщение #9


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 27.8.2009
Пользователь №: 1027

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 17.2.2010, 2:04) *
Цитата(User_3 @ 16.2.2010, 20:43) *
Не подскажешь как решить?
UTF-8


Как я понял мне нужна эта часть :

CODE
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()));

}


Т.е. здесь при нажатии кнопки submit, данные которые я изменил через ячейки таблицы изменятся в бд?

Но возникают ошибки обращения к неинициализированной области памяти и "Using unsupported buffertype: -1 (parameter: 1)".

А разве нет более простого способа изменения данных в ячейках?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 17.2.2010, 14:48
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

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




Репутация:   9  


Цитата(User_3 @ 17.2.2010, 14:22) *
А разве нет более простого способа изменения данных в ячейках?

Я же намекал, что так нужно делать при выбранной политики редактирования (QSqlTableModel::OnManualSubmit), но существуют и другие.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 16:04