Russian Qt Forum

Qt => Базы данных => Тема начата: KrupaKarlo от Декабрь 08, 2014, 11:17



Название: QSqlTableModel::submitAll MSSQL
Отправлено: KrupaKarlo от Декабрь 08, 2014, 11:17
проблема в том что при работе с MSSQL вызов submitAll не работает. Ошибка связана с тем, что Qt формирует запросы на апдейт включая primary key identity поля. Собственно база шлет нафиг. код формирования запроса зашит прямо внутри QtSql. Может кто сталивался с такой проблемой


Название: Re: QSqlTableModel::submitAll MSSQL
Отправлено: Пантер от Декабрь 08, 2014, 11:38
Попробуй перед submitAll создать транзакцию.


Название: Re: QSqlTableModel::submitAll MSSQL
Отправлено: KrupaKarlo от Декабрь 08, 2014, 11:58
уже сделано.


Название: Re: QSqlTableModel::submitAll MSSQL
Отправлено: Пантер от Декабрь 08, 2014, 12:38
Не могу по теме ничего подсказать, но сам я не юзал QSqlTableModel. ИМХО, добавление/редактирование лучше сделать через отдельный диалог и использовать QSqlQueryModel.


Название: Re: QSqlTableModel::submitAll MSSQL
Отправлено: KrupaKarlo от Декабрь 08, 2014, 16:30
Меня просто попросили помочь найти ошибку. Сам их не юазаю. Малоли кому будет полезно.

Решение проблемы в следующем: после функции setRecord  (даже если вы вообще рекорд не меняли ) модель запихивает в UPDATE скрипт все поля включая первичный ключ. Собственно identity поля нельзя обновить.