Название: Сообщения БД. Отправлено: cya-st от Декабрь 05, 2009, 21:43 Всем привет.
Есть таблица (PostgreSQL): Код Установлено CONSTRAINT, но при добавлении записи минусовое число (например PricePost= -1.00), запись не добавляется и не выводится сообщение CONSTRAINT. Запись добавляется в QTableViews. Подскажите пожалуйста как вывести сообщение. Название: Re: Сообщения БД. Отправлено: MoPDoBoPoT от Декабрь 05, 2009, 22:25 Из контекста догадываюсь, что ты пользуешся QSqlTableModel (или производным классом от него).
Узнать об ошибке можно вызвав метод lastError(). В представлении ты видишь новую некорректную строку из-за стратегии редактирования QSqlTableModel::OnManualSubmit (все изменения в модели кэшируются до submitAll()/revertAll()) Если ты вводишь значения прямо во вьющке, то на нее можно повесить делегата, который будет накладывать заведомо известные ограничения. А если изменения производятся через диалог, то пользуйся валидоторами. Название: Re: Сообщения БД. Отправлено: cya-st от Декабрь 05, 2009, 22:37 Я вставляю прямо на вьюшке:
Код: md.insertRow(model->rowCount()); Цитировать В представлении ты видишь новую некорректную строку из-за стратегии редактирования QSqlTableModel::OnManualSubmit (все изменения в модели кэшируются до submitAll()/revertAll()) Не понял, поподробней можно?Если ты вводишь значения прямо во вьющке, то на нее можно повесить делегата, который будет накладывать заведомо известные ограничения. А если изменения производятся через диалог, то пользуйся валидоторами. Название: Re: Сообщения БД. Отправлено: MoPDoBoPoT от Декабрь 06, 2009, 13:24 Кхм, просто в первом посте как-то неоднозначно было написано :)
...запись не добавляется и не выводится сообщение CONSTRAINT. Запись добавляется в QTableViews.... Я подумал что запись не добавляется в БД, но добавляется в модель (видна во вьюшке).Код: md.insertRow(model->rowCount()); Перед submit() надо заполнить запись значениями. Для этого удобней воспользоваться методом QSqlTableModel::insertRecord(). Название: Re: Сообщения БД. Отправлено: cya-st от Декабрь 07, 2009, 17:31 Вообщето добавляет запись даже без submit. После выполнения md.insertRow(model->rowCount());, появляется новая строка, где я ввожу данные. Но если PricePost я введу меньше нуля, то запись не добавляется и не появляется сообщение CONSTRAINT, вопрос в том, как мне этот CONSTRAINT показать?
Название: Re: Сообщения БД. Отправлено: MoPDoBoPoT от Декабрь 07, 2009, 18:31 Вообщето добавляет запись даже без submit. В БД добавляется?вопрос в том, как мне этот CONSTRAINT показать? Метод QSqlTableModel::submit() возвращает признак успеха/неуспеха операции. Для получения доступа к информации об ошибках используй QSqlTableModel::lastError(). А для отображения ошибки есть QMessageBox.Название: Re: Сообщения БД. Отправлено: cya-st от Декабрь 07, 2009, 20:06 Заработало. Спасибо.
|