![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
mishabard |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Суть следующая:
Есть модель и связанныя с ней таблица model->setRelation(kassaModel->fieldIndex("idpay"),QSqlRelation("pay","id","name")); ... Есть связанный виджет который в диалоговом окне меняет занчение в таблице ... QSqlTableModel *paymodel = model->relationModel(model->fieldIndex("idpay")); QComboBox * pCombo->setModel(paymodel); pCombo->setModelColumn(paymodel->fieldIndex("name")); .... mapper->addMapping(pCombo, model->fieldIndex("name")); .... Все работает, все замечательно!!! НО! Оказалось, что есть довольно много справочников, которые состоят из 2 или 3 значений или строк: Например: "T" - "ДА" "F" - "НЕТ" или "R" - "Красный" "B" - "Черный" "W" - "Белый" и т.п. В базе данных хранятся только ключи и все они CHAR(1). Логику и структуру поменять не получится, приходится приспосабливаться. ВОПРОС??? Можно ли в model->setRelation(kassaModel->fieldIndex("idpay"),QSqlRelation("pay","id","name")); Подставить модель не из базы данных. Созданную в программе. например QStandartItemModel или что- то еще проще, потому как все справочники - это (ключ - название). Наверно так как я написал -нельзя, но может есть какой то другой подход, использовать справочники "мелкие" не из базы данных, чтоб не нагружать сеть и не перегружать запросы. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
можно свои делегаты сделать, чтобы каждый отображал пользователю нужную информацию вместо значения в ячейке
П.С. вообще для БД не рекомендуется строить много коротких справочников, лучше один длинный. |
|
|
mishabard |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
можно свои делегаты сделать, чтобы каждый отображал пользователю нужную информацию вместо значения в ячейке я так и делаю. Использую или делегат или обробатываю QSqlRelationalTableModel::data можно свои делегаты сделать, чтобы каждый отображал пользователю нужную информацию вместо значения в ячейке я так и делаю. Использую или делегат или обробатываю QSqlRelationalTableModel::data Я может не првильно выразился. У меня изменения в базе происходят не через TableView, а через диалоговые окна, в которых стоят связанные делегаты. И если есть справочник, который не находится в базе, а заложен в программе, а таких не мало. То приходится чать полей обновлять через Маперы, а часть руками через Record, писать под каждое поле обработчик. Вот вопрос можно ли как-то в релятиционные поля добовлять модели не из базы данных. Сижу копаюсь второй день пока, пришла на мысль идея наследовать QSqlRelation. И использовать ту же конструкцию model->setRelation(kassaModel->fieldIndex("idpay"),QSqlRelation("pay","id","name"));но таблица "pay" - это какая то модель локальная созданная в программе Как думаете я на правильном пути? Может была уже у кого-то такая задача? Или все делается проще и я просто еще об этом не догадываюсь? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Сижу копаюсь второй день пока, пришла на мысль идея наследовать QSqlRelation. И использовать ту же конструкцию видимо так и придётся делать. по большому счёту работа с Модель/представление + БД у тролей реализована на начальном этапе и никакого развития в этом направлении нет. А если ещё учесть некоторые новости относительно Qt 5 Цитата QtSql: то выбранный тобою путь - видимо единственный.
Требуются сопровождающие (Maintainers) |
|
|
mishabard |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Знаний пока не хватает((( но все равно попробую разобраться.
Спасибо! |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 10:10 |