crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QTableView + QSqlRelationalTableModel + MySQL, некорректно работает добавление элемента
varvasar
  опции профиля:
сообщение 28.7.2008, 13:37
Сообщение #1


Новичок


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

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




Репутация:   0  


Проблема странная, поэтому описывать буду подробно.

При добавлении новой записи в базу (через модель естественно)
dModel->insertRow(row);
cIndex = dModel->index(row, s_c);
dTableView->setCurrentIndex(cIndex);
dTableView->edit(cIndex);

Происходит следующее:
Если таблица достаточно простая, с одним внешним ключем (setRelation), то все проходит на ура.
Если же для таблицы установлено несколько внешних ключей, то при завершении редактирования новой записи имеет место сбой:
новая запись отображается корректно, а запись, находившаяся ранее в строке row - с ошибками - в полях с внешними ключами неверные данные.
Если после добавления записи выполнить dModel->select() все становится ок, тоесть проблема только в отображении данных, в БД ошибки не идут.
Это раз.


Кроме всего прочего, после добавления записи, в конце таблицы почему-то появляются линшие пустые строки, числом равные количеству заполненных строк в этой таблице.
Причем выделить их нельзя, а после закрытия dTableView и открытия его снова лишние строки пропадают, т.е проблема снова в отображении.
Это два

Есть еще три - подскажите, как заставить QTableView после добавления новой записи скролиться на нее. Выделение записи я сделал с помощью QItemSelection, но скролинга на выделение не происходит, а при больших рабмерах таблиц это сильно не удобно.
Заранее благодарен за помощь

Qt v4.3.4
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2008, 13:48
Сообщение #2


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

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

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




Репутация:   94  


описаный баг похож на тот который у меня был. я работаю через ODBC с Firebird'ом, все исправилось после обновления драйвера Firebird ODBC и больше никогда непроявлялось (хотя логики ни какой, как и у тебя в БД все писалось путем).
А ты какой драйвер Qxxx используешь и для какой БД?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
varvasar
  опции профиля:
сообщение 5.8.2008, 12:47
Сообщение #3


Новичок


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

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




Репутация:   0  


Перекомпилил проект в релизе - лишние строки пропали, но остальные баги остались.
БД MySQL 5.0.51b
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 14.12.2017, 21:52