Название: SQLite + QSqlTableModel + submitAll непонятки... Отправлено: ByKA от Февраль 24, 2009, 17:03 Добрый день,
Есть QSqlTableModel с политикой OnManualSubmit на которую подвешена SQLite база. Изменяем данные: Код: QSqlRecord record = SignalModel->record(ssIndex.row()); submitAll вынесен на кнопку Код: if (!SignalModel->submitAll()) В Qt 4.4.3 и 4.4.4 submitAll ругается что нет измененных данных (No fields to update). В Qt 4.3.5 и 4.5.0 вызов проходит нормально, но изменения во вьюшке сбрасываются и БД не попадают ((( В багтрекере нашел ошибку по поводу "No fields to update" : http://www.qtsoftware.com/developer/task-tracker/index_html?method=entry&id=230381 (http://www.qtsoftware.com/developer/task-tracker/index_html?method=entry&id=230381) Больше мыслей нет ((( Название: Re: SQLite + QSqlTableModel + submitAll непонятки... Отправлено: ByKA от Февраль 25, 2009, 11:03 Добавлю: с setData такая-же ерунда. После submitAll данные сбрасываются и в базу не попадают... Версия 4.5.0.
Название: Re: SQLite + QSqlTableModel + submitAll непонятки... Отправлено: ByKA от Февраль 25, 2009, 12:25 И еще добавлю: при изменении политики на QSqlTableModel::OnFieldChange или RowChange данные сбрасываются сразу после окончания ввода (при редактировании данных из формы).
Название: Re: SQLite + QSqlTableModel + submitAll непонятки... Отправлено: ranet от Март 10, 2009, 16:55 Проверь пожалуйста, нет ли у тебя где-нибудь похожей строчки:
SignalModel->removeColumn(0); Если есть - то попробуй убрать. Название: Re: SQLite + QSqlTableModel + submitAll непонятки... Отправлено: ByKA от Март 12, 2009, 11:38 removeColumn не использую ((( Вариантов пока не нашел.....
Название: Re: SQLite + QSqlTableModel + submitAll непонятки... Отправлено: ranet от Март 12, 2009, 12:16 removeColumn не использую ((( Вариантов пока не нашел..... а mapper'а таким образом настроенного:mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit) у тебя тоже нету? Посмотрел твой код внимательно: record.setValue("Gen", "2"); SignalModel->setRecord(ssIndex.row(), record); -это место подозрения некоторые вызывает, а именно - ты меняешь данные, и после этого выбираешь СНОВА строку (не так важно, что строка - та же самая, которая и была). Возможно что тут как раз изменения и теряются.. Попробуй для эксперимента submit МЕЖДУ этими командами вызвать.. |