QSqlRalationTableModel (получить данные связанного столбца)

Модератор: Модераторы разделов

HoneyDimon
Сообщения: 7
ОС: Win 7

QSqlRalationTableModel

Сообщение HoneyDimon »

Снова прошу помощи. Унаследовал свой класс от QSqlRelationTableModel. Имею две таблицы 1. в первой два поля kod, name. 2. во второй несколько полей и одно из них kod связь с 1 таблицей.
Установил отношение model_ztu->setRelation(2,QSqlRelation("dbusers","kod","name"));
Все красиво и хорошо, вместо поля kod в представлении выводится name.
Но я не могу получить значение kod для текущей записи методом data, получаю name. Как получить kod из текущей модели.
И еще в этой модели незнаю как работать с методом
QSqlrecord rec = model->record
rec.setvalue(fieldname,значение)

для столбцов в отношении он не пашет.
Спасибо сказали:
HoneyDimon
Сообщения: 7
ОС: Win 7

Re: QSqlRalationTableModel

Сообщение HoneyDimon »

Неужто никто не знает ?
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: QSqlRalationTableModel

Сообщение NickLion »

Логично, что используя data() Вы не можете получить kod, этот метод используется для отображения таблицы. Внутри Qt всё преобразуется к INNER JOIN и исходного kod не остаётся. Во второй таблице должен быть уникальный идентификатор, по нему сделать что-то вроде SELECT kod FROM Table2 WHERE id2=.... Как вариант, посмотрите предпоследнее сообщение в этой теме, такое решение может однажды перестать работать, но думаю, ещё должно работать.

А по поводу QSqlRecord, не понял вообще что не так. setValue должен нормально отработать, проверьте после этого QSqlRecord::value(). Должно значение поменяться. Если интересует значение в таблице, то нужно, ещё сделать QSqlModel::setRecord() выполнить.
Спасибо сказали:
HoneyDimon
Сообщения: 7
ОС: Win 7

Re: QSqlRalationTableModel

Сообщение HoneyDimon »

Этот метод model_ztu->setRelation(2,QSqlRelation("dbusers","Kod","Fio, Kod as Kod")); к сожалению не работает. Естественно я выбирал Select нужную запись и получал kod, просто думал может я опять ненашел более простой метод.
А с setValue - получается когда я хочу записать значение в поле kod , то не получится, ведь его нет и вместо него присутствует name в моделе, поэтому придется использовать Update.
Спасибо сказали: