crossplatform.ru

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


  Ответ в QSqlTAbleModel+QTableView
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 1.10.2009, 19:58
  лучше тригер добавить в БД. Тогда проблем никаких не будет.

Либо, если предыдущее невозможно, воспользуйся одним из сигналов предоставляемых QAbstractItemModel, например:
void QAbstractItemModel::rowsAboutToBeInserted ( const QModelIndex & parent, int start, int end ) [signal]
В слоте, с которым ты соеденишь его создавай ПК и сохраняй в БД, т.е. тригер реализушь в программе.
iris Дата 1.10.2009, 17:21
 
Цитата(Litkevich Yuriy @ 1.10.2009, 16:59) *
Цитата(Гость_IRIS_* @ 1.10.2009, 19:18) *
надо было обязательно выводить ключевое поле.
ты имеешь ввиду такую ситуацию:
* Первичный ключ (ПК) не отображается в представлении, но есть в таблице БД
* При редактировании добавляются новые строки, но таблица в БД не имеет тригера создающего ПК

так?


да
Litkevich Yuriy Дата 1.10.2009, 16:59
 
Цитата(Гость_IRIS_* @ 1.10.2009, 19:18) *
надо было обязательно выводить ключевое поле.
ты имеешь ввиду такую ситуацию:
* Первичный ключ (ПК) не отображается в представлении, но есть в таблице БД
* При редактировании добавляются новые строки, но таблица в БД не имеет тригера создающего ПК

так?
ViGOur Дата 1.10.2009, 15:30
  Как я понимаю для этого нужно снять флаг Qt::ItemIsEditable у QModelIndex.
IRIS Дата 1.10.2009, 15:18
  все разобралась. надо было обязательно выводить ключевое поле. А можно сделать как-нибудь так чтобы часть полей была редактируема, а часть нет?
iris Дата 1.10.2009, 12:52
  Изменяю данные в QTAbleView. Когда пытаюсь занести измененные данные в базу, ничего не заносится
функция
void Window::insert(){
    model->database().transaction();
    if (model->submitAll()){
        model->database().commit();
    } else {
        model->database().rollback();
    }
}

выходит по rollback();
подскажите, пожалуйста, в чем тут может быть дело.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 9.7.2020, 23:12