setRelation оказался лишним? |
Здравствуйте, гость ( Вход | Регистрация )
setRelation оказался лишним? |
Steklova Olga |
27.1.2012, 18:17
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Здравствуйте Есть у меня три таблицы в БД:
TD_OBJ_SRC_NAME (словарь) с полями F_OBJ_SRC_CODE, F_OBJ_SRC_NAME F_OBJ_SRC_CODE - PK T_OBJ (главная) с полями F_OBJ_ID, TO_F_OBJ_SRC_CODE, ... F_OBJ_ID, TO_F_OBJ_SRC_CODE - PK TO_F_OBJ_SRC_CODE - FK, указывающий на F_OBJ_SRC_CODE словаря T_OBJ_DET_NMBS (дочерняя) с полями F_RECORD_NMB, TO_F_OBJ_ID, TO_TO_F_OBJ_SRC_CODE, ... F_RECORD_NMB - PK TO_F_OBJ_ID, TO_TO_F_OBJ_SRC_CODE - FK, указывающий на F_OBJ_ID, TO_F_OBJ_SRC_CODE главной таблицы Отношение главной и дочерней таблиц: 1-N. Задача в том, что, с одной стороны, при отображении главной таблицы надо вместо OBJ_SRC_CODE отображать OBJ_SRC_NAME из словаря, а, с другой стороны, при изменении текущей записи в главной таблице (OBJ_ID, OBJ_SRC_CODE) надо отображать соотв. записи из дочерней. Раскрывающийся текст
то после этого я не смогла бы в update_view_NN_det_for_obj_query() выполнить так как в update_view_NN_det_for_obj_query() выдает -1, если в таблице T_OBJ установлен setRelation для поля TO_F_OBJ_SRC_CODEа выдает "F_OBJ_SRC_NAME", если в таблице T_OBJ установлен setRelation для поля TO_F_OBJ_SRC_CODEвыдает "TO_F_OBJ_SRC_CODE", если в таблице T_OBJ не установлен setRelation для поля TO_F_OBJ_SRC_CODE Решение пока такое: вместо использования setRelation наследую модель MyModel_obj от QSqlRelationalTableModel и переопределяю DisplayRole. Можно, конечно, предварительно сделать один раз запрос к словарю, чтобы взять там все значения поля OBJ_SRC_NAME, а не прописывать их прямо в коде... Раскрывающийся текст
|
|
|
Litkevich Yuriy |
31.1.2012, 20:01
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Задача в том, что, с одной стороны, при отображении главной таблицы надо вместо OBJ_SRC_CODE отображать OBJ_SRC_NAME из словаря, а, с другой стороны, при изменении текущей записи в главной таблице (OBJ_ID, OBJ_SRC_CODE) надо отображать соотв. записи из дочерней. не смог представить, как я (пользователь) этим пользуюсь |
|
|
Steklova Olga |
1.2.2012, 10:04
Сообщение
#3
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Цитата не смог представить, как я (пользователь) этим пользуюсь Пользуюсь так: - отображаю на экране одновременно два QTableView (сверху - view_obj для главной таблицы, снизу - view_NN_det_for_obj для дочерней таблицы), - в главной таблице отображаю поля "N объекта", "Источник инф. об объекте" (наименование, а не код), - в главной таблице выделяю одну из строк (текущую), - при изменении текущей строки в главной таблице обновляю отображение дочерней таблицы, выводя в дочернюю таблицу параметры деталей объекта, имеющего "N объекта" и "Код источника инф. об объекте" из текущей строки главной таблицы. Сообщение отредактировал Steklova Olga - 3.2.2012, 18:27 |
|
|
Steklova Olga |
10.2.2012, 17:07
Сообщение
#4
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Извините, ни у кого, что-ли, такой ситуации не было?
|
|
|
wiz29 |
10.2.2012, 17:32
Сообщение
#5
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
не совсем понятна суть вопроса.
|
|
|
Steklova Olga |
10.2.2012, 17:46
Сообщение
#6
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Я имела в виду, что кроме переопределения Qt::DisplayRole здесь ничего не поможет, что-ли?
И если написать setRelation, то после этого до замененного поля уже нельзя будет добраться? А для того, чтобы пользоваться setRelation, надо было по-другому делать связь между главной и дочерней таблицами, создав для этого в главной таблице дополнительно поле ID и ссылаться на него из дочерней таблицы, в которой создать соответственно поле TO_ID? Сообщение отредактировал Steklova Olga - 12.2.2012, 19:40 |
|
|
Текстовая версия | Сейчас: 29.11.2024, 7:15 |