crossplatform.ru

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

> QSqlRelationTableModel SetRelation возвращает NULL при добавлении новой строки, Новая строка не отображается если в подменяемом поле стоит NULL
mishabard
  опции профиля:
сообщение 27.6.2011, 21:59
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 13.6.2011
Из: Киев
Пользователь №: 2741

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте!
Использую QSQLRelationTableModel QTableView
Есть две таблицы поля у которых связанные между собой таким образом:

kassaModel->setRelation(kassaModel->fieldIndex("idstat"),QSqlRelation("statlist","id","name"));
kassaModel->setRelation(kassaModel->fieldIndex("idpartner"),QSqlRelation("partner","id","name"));

Вопрос первый:

При отображении в QTAbleView получается два поля после подмены NAME, STATLIST_NAME_2
Можно как-то переназвать эти поля( не заголовки в представлении!!!! а именно название полей), например чтобы потом было удобно ими пользоваться и не вспоминать все эти названия?


Второй вопрос: при добавлении новой записи в kassaModel связанные поля idstat, idpartner имеют значения NULL потому как в них еще не установленны соответсвия из связанных таблиц. И поэтому новые записи не появляются в TableView. Как это решить? В официальной документации вычитал что никак!!!????(((((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 28.6.2011, 6:12
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(mishabard @ 28.6.2011, 0:59) *
В официальной документации вычитал что никак!!!????(((((
ссылку давай
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mishabard
  опции профиля:
сообщение 28.6.2011, 12:41
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 13.6.2011
Из: Киев
Пользователь №: 2741

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 28.6.2011, 6:12) *
Цитата(mishabard @ 28.6.2011, 0:59) *
В официальной документации вычитал что никак!!!????(((((
ссылку давай

Поискал ссылку, не нахожу, много вчера пересмотрел. Это наверно была статья по использованию QSQLRelation. Может и не официальная. Но было написано черным по белому на русском языке примерно следующие: Что при использовании QSQLRelation идет сопоставление внешнего ключа одной таблицы к ID в другой "ОДИН к ОДНОМУ". бла бла бла... и на экран в Представлении выведутся только те строки у которых удовелтворены зависимости внешний ключ - ID внешней таблицы. бла бла бла... Если у вас может возникнуть такая ситуация, то лучше использовать QSQLQueryModel и строить запросы в которых будет проверяться возможность отображения строк с NULLевыми полями. ЧТо то в таком духе.



Цитата(Litkevich Yuriy @ 28.6.2011, 6:12) *
Цитата(mishabard @ 28.6.2011, 0:59) *
В официальной документации вычитал что никак!!!????(((((
ссылку давай



Все таки нашел!!!!
Вот ссылка на статью: http://symmetrica.net/qt4/lesson2.htm

Вот текст из статьи(примерно по середине статьи) :
Следует отметить один недостаток отображения сложных систем реляционных таблиц с помощью Interview Framework. В нашей модели данных вешний ключ album_id таблицы compositions может содержать пустые значения. При замещении столбца album_id столбцом с названием альбома с помощью метода setRelation(), строки, содержащие пустые значения в поле album_id, просто не попадут в модель (то же самое происходит при попытке сформировать таблицу с помощью запроса SELECT * FROM albums WHERE...). В представлении view_all, которые вы найдете в файле createtables.sql я обошел эту проблему, комбинируя левые и правые объединения (joins). Но класс QSqlRelationalTableModel так делать не умеет, поэтому если вы хотите отображать таблицы с пустыми внешними ключами целиком, вам придется самостоятельно конструировать SQL-запросы. Можно, конечно, пойти и по другому пути – ввести в список альбомов псевдо-альбом single, и добавлять в этот «альбом» все композиции, не являющиеся частью альбомов. При таком подходе замечательная песня «Есть на Волге утес» классифицировалась бы как «сингл неизвестного автора».
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 21:17