Russian Qt Forum
Ноябрь 23, 2024, 15:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlRelationalTableModel + LEFT JOIN  (Прочитано 4928 раз)
Maz
Гость
« : Июнь 18, 2007, 12:31 »

У меня такая ситуация:
Нужно выполнить запрос с LEFT JOIN. В получиченных данных есть вторичные ключи. Их и хотелось бы "правильно" отображать, т.е. чтобы значения брались со справочников. Каким образом это можно сделать подскажите пожалуйста.
Записан
Kainit
Гость
« Ответ #1 : Июнь 18, 2007, 14:25 »

Я немного не в тему, но скажите мне, почему у меня не получается вытащить форены из QSqlRelationalTableModel?

Подключаюсь к базе (MySQL), всё хорошо, всё нормально. Делаю

QSqlRelationalTableModel *model = new QSqlRelationalTableModel ( this, db);
model->setTable("testTable");

for(int i=0; i<model->columnCount(); i++)
{
   editor->append((model->headerData(i,Qt::Horizontal)).toString());

   if( !model->relation(i).isValid () )
      editor->append("INVALID");
   else
   {
      editor->append(model->relation(i).displayColumn());
      editor->append(model->relation(i).indexColumn());
      editor->append(model->relation(i).tableName());
   }
}

И несмотря на то что в таблице есть 2 форена, я всё равно по всем колонка получают INVALID...
Или QSqlRelationalTableModel не берёт форены из базы, а работает только с теми что я назначил? Но это было бы странно.
Есть у кого-нибудь такая же проблема?
Записан
SABROG
Гость
« Ответ #2 : Июнь 18, 2007, 14:44 »

Kainit: а где ты вызываешь model->setRelation() ?
Записан
Kainit
Гость
« Ответ #3 : Июнь 18, 2007, 16:30 »

Цитата: "SABROG"
Kainit: а где ты вызываешь model->setRelation() ?

Я нигде не вызываю!
У меня на MySQL база в которой все связи проставлены. Foreign Keys, называются. И по идее, используя MySQL C API, эти связи очень легко получить... А Qt-шный драйвер на MySQL именно этим API и пользуется. И я, честно говоря, твёрдо уверен был что связи должны были быть восстановлены...

Именно поэтому я и спросил
Цитировать
"Или QSqlRelationalTableModel не берёт форены из базы, а работает только с теми что я назначил?"

Может ли кто-нибудь поклясться, что при инициализации QSqlRelationalTableModel по подключению к реальной базе имеющей связи, модель не будет иметь никаких связей.
Записан
SABROG
Гость
« Ответ #4 : Июнь 18, 2007, 16:38 »

Посмотри исходники Qt и поклянись самому себе Улыбающийся
Записан
Kainit
Гость
« Ответ #5 : Июнь 18, 2007, 16:46 »

Посмотрел... Похоже что так и есть, но это же неправильно...

Вместо того чтобы всё произошло само собой, я должен какими-то сторонними средствами получить все связи, потом создать QSqlRelationalTableModel и проставить все связи вручную.....

А как я могу получить связи, если QSqlDatabase не предоставляет таких механизмов?!

Кто-нибудь, скажите, как получить информацию о Foreign Keys в Qt ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.131 секунд. Запросов: 21.