crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QSqlRelationalTableModel: как получить значение
b10t
  опции профиля:
сообщение 10.7.2009, 9:06
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

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




Репутация:   0  


Добрый день.

Есть модель от класса QSqlRelationalTableModel, мне необходимо получить ключ из поля, а не значение. Как это можно сделать ?

CODE
model->setRelation(2, QSqlRelation("diametr", "id", "naimenovanie"));


Мне нужно получить значение ключа id, а не naimenovanie.

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mva
  опции профиля:
сообщение 10.7.2009, 10:07
Сообщение #2


Участник
**

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

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




Репутация:   0  


Т.к. это реляционное отношение двух таблиц, то значение ключа в столбце 2 модели model будет равно значению поля id в таблице diametr, если таковая запись в таблице diametr имеется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
b10t
  опции профиля:
сообщение 10.7.2009, 10:14
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

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




Репутация:   0  


Цитата(mva @ 10.7.2009, 16:07) *
Т.к. это реляционное отношение двух таблиц, то значение ключа в столбце 2 модели model будет равно значению поля id в таблице diametr, если таковая запись в таблице diametr имеется.


А как получить значение ключа ?

Если делаем так : model->data(model->index(0, 2)), то получаем значение поля naimenovanie из таблицы diametr, а нужно получить id.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mva
  опции профиля:
сообщение 10.7.2009, 10:23
Сообщение #4


Участник
**

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

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




Репутация:   0  


Точно так же, как получаем значение любого поля таблицы:
QSqlRecord rec = model->record(/* номер записи(строки) из которой нужно извлечь данные*/);
int key = rec.value(2).toInt();                 // получаем значение ключа во 2-м столбце для заданной выше записи
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
b10t
  опции профиля:
сообщение 10.7.2009, 10:29
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

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




Репутация:   0  


Цитата(mva @ 10.7.2009, 16:23) *
Точно так же, как получаем значение любого поля таблицы:
QSqlRecord rec = model->record(/* номер записи(строки) из которой нужно извлечь данные*/);
int key = rec.value(2).toInt();                 // получаем значение ключа во 2-м столбце для заданной выше записи


Проверил, возвращает значение из поля naimenovanie, а не id.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mva
  опции профиля:
сообщение 10.7.2009, 10:47
Сообщение #6


Участник
**

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

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




Репутация:   0  


...Упс! А я и забыл, что Qt просто подменяет значение ключа...

Тогда такие варианты:
1. Получать значение ключа до установления реляции.
2. В исходной таблице заводить копию поля 2.

Вообще-то я тоже недавно столкнулся с этой проблемой и мне пришлось создать собственный класс на основе QSqlRelationalTableModel чтобы "доделать" реляции в Qt. Сейчас я уже и забыл про эту проблемку...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
b10t
  опции профиля:
сообщение 10.7.2009, 10:51
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

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




Репутация:   0  


Цитата(mva @ 10.7.2009, 16:47) *
...Упс! А я и забыл, что Qt просто подменяет значение ключа...

Тогда такие варианты:
1. Получать значение ключа до установления реляции.
2. В исходной таблице заводить копию поля 2.

Вообще-то я тоже недавно столкнулся с этой проблемой и мне пришлось создать собственный класс на основе QSqlRelationalTableModel чтобы "доделать" реляции в Qt. Сейчас я уже и забыл про эту проблемку...



Тогда так и сделаю :)

спс
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.7.2009, 12:46
Сообщение #8


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

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

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




Репутация:   94  


Есть ещё:
QSqlRelation
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
b10t
  опции профиля:
сообщение 10.7.2009, 12:50
Сообщение #9


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 10.7.2009, 18:46) *
Есть ещё:
QSqlRelation


Он описывает реляцию просто, до данных не достучаться из него :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.7.2009, 13:20
Сообщение #10


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

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

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




Репутация:   94  


b10t, так тебе всё-таки данные нужны?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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