crossplatform.ru

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

Steklova Olga
  опции профиля:
сообщение 22.5.2013, 13:43
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

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




Репутация:   4  


Добрый день :)
Запускаю пример staffmanager из главы 13 книги Бланшет "Qt 4. Программирование GUI на C++", изд.2.
Хочу добавить в БД новый Department и Employees для этого нового Department.
Нажимаю кнопку "Add Dept", в табл Departments появляется пустая строка, помеченная "*", ввожу данные в эту строку.
А дальше что делать? Или код этого примера не позволяет это сделать?

Добавлено 22.05.2013 16:50
При добавлении данных предполагаю, что результат добавления должен быть виден на экране и вноситься в БД.
А, запуская пример, я этого не вижу.
Или этот пример не дописан в книге в части редактирования таблицы Departments ?

Сообщение отредактировал Steklova Olga - 22.5.2013, 15:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
3 страниц V  < 1 2 3  
Начать новую тему
Ответов (20 - 22)
Litkevich Yuriy
  опции профиля:
сообщение 31.5.2013, 19:33
Сообщение #21


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

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

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




Репутация:   94  


Цитата(Steklova Olga @ 31.5.2013, 19:52) *
"The database reported an error: invalid transaction handle (expecting explicit transaction start) Unable to execute query", вторая запись не сохраняется.
Это всё к тому что я написал выше, тут вот ещё кое-что


в общем ни модели Qt ни соответственно Мапер (который пользуется моделью) не подразумевают использование транзакций.
Транзакции уверенно работают только при использовании QSqlQueryModel и всё. Как только начинают использоваться QSqlTableModel так всё сразу начинает глючить.

Причём проявляется это для разных драйверов СУБД. На сегодняшний день проявилось (в разных версиях Qt по разному) QIBase/QFirebird, QSqlite, QMysql, QOdbc
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Steklova Olga
  опции профиля:
сообщение 3.6.2013, 10:36
Сообщение #22


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

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




Репутация:   4  


Цитата(Litkevich Yuriy @ 31.5.2013, 19:33) *
Транзакции уверенно работают только при использовании QSqlQueryModel и всё. Как только начинают использоваться QSqlTableModel так всё сразу начинает глючить.

а ранее вы писали
Цитата(Litkevich Yuriy @ 21.3.2010, 0:52) *
Заменил QSqlTableModel, на простой QSqlQuery

Простите, так надо использовать QSqlQuery? Или QSqlQueryModel тоже можно?

А что вы думаете о предложении lvlad ?
Цитата(lvlad @ 18.6.2012, 14:35) *
чтобы исправить проблему необходимо в файле qsqltablemodel.cpp
в методе QSqlTableModelPrivate::exec закомментировать строку:
if (editQuery.driver() != db.driver())

После этого придется перекомпилировать Qt или модуль QtSql
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.6.2013, 18:49
Сообщение #23


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

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

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




Репутация:   94  


Цитата(Steklova Olga @ 3.6.2013, 12:36) *
так надо использовать QSqlQuery? Или QSqlQueryModel тоже можно?
ошибся, QSqlQuery конечно


Цитата(Steklova Olga @ 3.6.2013, 12:36) *
А что вы думаете о предложении lvlad ?
надо пробовать, решение не очевидное.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.6.2025, 9:07