crossplatform.ru

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


  Ответ в Непонятный конструктор QSqlRelation
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
ViGOur Дата 15.1.2011, 15:20
  up
Litkevich Yuriy Дата 16.1.2002, 19:19
  displayColumn - отображаемая колонка, та что подставляется в замен.
Rocky Дата 13.1.2011, 16:58
  С фильтром вроде как разобрался... нужно так писать
m_pModelBook->setFilter(QString("BOOKS.SeriaID = %1").arg(sSeriaID));

так все работает как и задумано... Однако все равно непонятно что это за displayColumn - 3-й параметр конструктора... Я пробовал и так писать
m_pModelBook->setRelation(1, QSqlRelation("SERIAS", "SeriaID", "SeriaName"));

и так
m_pModelBook->setRelation(1, QSqlRelation("SERIAS", "SeriaID", "SeriaID"));

И результаты ничем не отличаются...
Rocky Дата 13.1.2011, 12:48
  Всем привет! Вот читаю описание конструктора класса
QSqlRelation::QSqlRelation ( const QString & tableName, const QString & indexColumn, const QString & displayColumn )
Constructs a QSqlRelation object, where tableName is the SQL table name to which a foreign key refers, indexColumn is the foreign key, 
and displayColumn is the field that should be presented to the user.

Может кто-нибудь объяснить пожалуйста, что это за displayColumn? Где он, в какой таблице отображается пользователю? Я чето вообще не доганяю. Просто вот у меня есть пример (написал программу-картотеку):
m_pModelBook = new QSqlRelationalTableModel(this);
m_pModelBook->setTable("BOOKS");
m_pModelBook->setRelation(1, QSqlRelation("SERIAS", "SeriaID", "SeriaName"));
m_pModelBook->select();

Поле SeriaID - это PM в таблице SERIAS. Это же поле в колонке 1 в таблице BOOKS. Далее ставлю фильтр на модель книг. Хочу, чтобы в QTableView показывались только книги, у которых определенный SeriaID. Делаю так:
m_pModelBook->setFilter("SeriaID = 10");

SeriaID 10 100% есть в обоих таблицах. Результат - QTableView пустой. А вот если написать
m_pModelBook->setFilter("SeriaName = 'С++'");

, то в QTableView отображаются все книги, которые занесены в таблицу BOOKS, и у которых поле SeriaID указывает на запись таблицы SERIAS, и этому SeriaID соответствует SeriaName "С++".

Проблема в том, что в БД (использую SQLite) всего одна таблица SERIAS. И там может быть несколько записей с одним и тем же именем (например "Общее"), но с разными SeriaID. Поэтому правильно ставить фильтр на SeriaID а не на SeriaName. Что я делаю не так?

Спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 18:30