Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
29.6.2011, 13:03 | QSqlRelationTableModel SetRelation возвращает NULL при добавлении новой строки | 1. так как selectStatement() virtual protected, то мне необходимо унаследовать свой класс от QSQLRelationalTbableView и переопредилить эту функцию для того чтобы считать запрос, который создается после выполнения model->SetTable("table1") и добавления полей по внешним ключам kassaModel->setRelation(kassaModel->fieldIndex("idstat"),QSqlRelation("statlist","id","name")); Да, все верно, только не QSQLRelationalTbableView, а QSqlRelationalTableModel 2. После этого мне необходимо подменить этот запрос на свой, правильный красивый с алиасами и т.п. Как это сделать? model->setQuery("select ......."); функцией унаследованной от QSQLQueryModel? Получаешь исходный запрос
Если связей нет, то возвращаешь defaultQuery , иначе парсишь его регулярками и собираешь заново как тебе нужно. model->setQuery("select .......") использовать не нужно, твой новый запрос должен возвращаться функцией selectStatement(). 3. После того как у меня все получилось, я подменю запрос, будет ли моя модель также редактировать таблицу, накладывать фильтр, сортировать данные, которую я указал в самом начале model->SetTable("table1")? Или после редактирования запроса она у меня откажеться в TableViewe редактировать поля стандартно? Сортировка и фильтры будут работать, т.к. в новый запрос будет включено:
Редактирование не знаю, нужно проверять. Могу прислать исходники - пиши мыло. Почему-то не могу залить файлы сюда, говорит "Неудачная загрузка. Вам запрещено загружать такой тип файлов". Только все это проделывалось в качестве эксперимента, в продакшн код в итоге не вошло и, следовательно, не особо тестилось. http://narod.ru/disk/17533906001/sqlRelati...eModel.rar.html |
mishabard, | ||
Текстовая версия | Сейчас: 29.11.2024, 6:17 |