Russian Qt Forum
Ноябрь 23, 2024, 14:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
Сохранение и отображение данных
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Сохранение и отображение данных (Прочитано 6779 раз)
LEO
Гость
Сохранение и отображение данных
«
:
Апрель 03, 2013, 09:05 »
Господа, столкнулся с очень очень неприятной для себя проблемой и зашел в тупик в поиске решений, в двух словах о самой программе,человек вводит определенные данные они сохраняются в БД(SQLite) чтобы в последующем была возможность к ним обращаться при надобности, некоторые данные берутся из справочников, в данном случае их 2, данные из справочника вывожу в комбобокс, система работает следующим образом: при выборе определенного параметра в комбобоксе соответствующие данные подтягиваются в соответствующие поля лайнедита. Отображение идет с помощью датавиджетмэппера. Проблема в следующем,данные сохраняются в виде индексов что по идее верно, и при замене значения в справочнике, например фамилии оно поменяется во всей таблице где хранятся все общие сведения, чего бы не хотелось, как бы сделать так чтобы при замене данных в справочнике данные в общей таблице где хранятся все введенные данные не изменялись, для наглядности прикладываю то что удалось сделать на теперешний момент, запутался окончательно...
«
Последнее редактирование: Апрель 03, 2013, 13:23 от LEO
»
Записан
Bepec
Гость
Re: Сохранение и отображение данных
«
Ответ #1 :
Апрель 03, 2013, 09:21 »
Не смотрел проект, но это уже вторая тема про dataWidgetMapper. Наиболее простой вариант - используйте самописный обработчик и сохраняйте не индекс, а фамилию или что-там у вас
PS это проблема архитектуры если честно. В справочнике должна храниться статическая информация. Если же в какой то момент времени информация из справочника может измениться, значит следует либо создавать снапшоты справочника и привязывать значения таблицы ко времени, или же отказаться от справочника.
this моё мнение
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Сохранение и отображение данных
«
Ответ #2 :
Апрель 03, 2013, 10:02 »
Если все связи делать через ROWID (
http://www.sqlite.org/autoinc.html
), то никаких проблем не должно быть.
Записан
Qt 5.11/4.8.7 (X11/Win)
LEO
Гость
Re: Сохранение и отображение данных
«
Ответ #3 :
Апрель 03, 2013, 13:37 »
в общем решил пойти простым путем и записывать текстовые данные в основную таблицу,а не индексы, однако как сделать это через комбобокс не очень понял и решил сделать с помощью лайнедит+комплитер, но не могу понять почему сохраняются только данные которые я ввожу в комплитер, а данные которые подтягиваются и отображаются в других лайнедитах и привязаны в datawidgetmapper не сохраняются в базе...
Цитировать
Если все связи делать через ROWID (
http://www.sqlite.org/autoinc.html
), то никаких проблем не должно быть.
если завязать все на айдишнике, то изменив запись 123|директор|иванов| на 123|слесарь|иванов| должности везде поменяются, или я не так понял...
«
Последнее редактирование: Апрель 03, 2013, 21:23 от LEO
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Сохранение и отображение данных
«
Ответ #4 :
Апрель 03, 2013, 17:14 »
Цитата: LEO от Апрель 03, 2013, 13:37
если завязать все на айдишнике, то изменив запись 123|директор|иванов| на 123|слесарь|иванов| должности везде поменяются, или я не так понял...
запись должна быть типа
123|id_для_директор|иванов| на 123|id_для_слесарь|иванов|
id_для_директор и id_для_слесарь держать в отдельной таблице position
Записан
Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
Re: Сохранение и отображение данных
«
Ответ #5 :
Апрель 03, 2013, 18:22 »
GreatSnake - тут дело не в связях, а в том, что если таблица с идентификаторами изменится, то значения верные для более ранних записей будут неверными.
Аналогия - подключенные устройства в текущий момент:
101 - USB DVD
202 - USB HDD
Делаем запись в таблицу другую:
1 | 101 | METKA_DVD
2 | 202 | METKA_HDD
Вроде всё верно, но...
Меняем подключенное устройство с DVD на 3D принтер и получаем.
Таблица 1:
101 - 3D принтер
202 - USB HDD
Таблица 2:
1 | 101 | METKA_DVD
2 | 202 | METKA_HDD
3 | 101 | MODEL_PRINTER
В итоге первая запись ложная
Ибо данные могут изменяться в первой таблице.
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Сохранение и отображение данных
«
Ответ #6 :
Апрель 03, 2013, 21:03 »
Да уж. Я уже сам запутался.
То ли у вас проблема с формализацией объекта (выделение постоянных свойств объекта в отдельную таблицу), то ли проблема логирования и отображения смены постоянных (идентификационных) свойств объекта. И с той и с другой проблемой сталкивался, но которая у вас с первой читки не понял (((
На всякий вам бы курс пройти по моделированию баз данных.
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Сохранение и отображение данных
«
Ответ #7 :
Апрель 03, 2013, 21:08 »
Цитата: LEO от Апрель 03, 2013, 09:05
как бы сделать так чтобы при замене данных в справочнике данные в общей таблице где хранятся все введенные данные не изменялись, для наглядности прикладываю то что удалось сделать на теперешний момент, запутался окончательно...
Была такая проблема.
Предметная область - ремонт. Телефон в ремонте идентифициируется по имею. НО при замене платы меняется и имей. Вышел из положения введя понятие партии ремента с кодом, где имеи пишутся рядышком. Т.е. заменил строку на элемент из таблицы в которой есть история.
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
LEO
Гость
Re: Сохранение и отображение данных
«
Ответ #8 :
Апрель 03, 2013, 21:22 »
Вот Верес все пояснил на примере впринципе так как и я понимаю, впринципе так и есть так работает система связи и на мой взгляд, дело в том что там не такая уж и сложная база, там всего навсего 3 таблицы одна в которой все данные хранятся, остальные 2 справочники с которых берется инфа для заполнения большой таблицы где хранятся все данные, таким образом осуществляется хранение информации, в БД не асс не спорю , дело в другом, темы похожей не нашел, возможно где то и есть такая.
Приложил компиляберный вариант того что есть на сегодняшний день,буду думать завтра дальше...
Записан
Bepec
Гость
Re: Сохранение и отображение данных
«
Ответ #9 :
Апрель 03, 2013, 22:43 »
Я б предложил - повторюсь, не тормозить и сделать одной таблицей. Ибо меняющиеся данные в качестве справочных ох как не подходят
Записан
LEO
Гость
Re: Сохранение и отображение данных
«
Ответ #10 :
Апрель 04, 2013, 07:56 »
:(Это не вариант, нужны справочники, они необходимы, сохранять в тексте надо просто научится в основную таблицу и отображать все как надо, с этим проблемы сейчас
«
Последнее редактирование: Апрель 04, 2013, 08:03 от LEO
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Сохранение и отображение данных
«
Ответ #11 :
Апрель 04, 2013, 08:06 »
Цитата: Bepec от Апрель 03, 2013, 18:22
GreatSnake - тут дело не в связях, а в том, что если таблица с идентификаторами изменится, то значения верные для более ранних записей будут неверными.
С чего это вдруг
Разговор идёт про отдельный справочник. В данном примере про USB устройства.
При его изменении уникальный ID не должен меняться. Разве что может быть удалена вся запись.
Цитировать
Аналогия - подключенные устройства в текущий момент:
101 - USB DVD
202 - USB HDD
Делаем запись в таблицу другую:
1 | 101 | METKA_DVD
2 | 202 | METKA_HDD
Вроде всё верно, но...
Меняем подключенное устройство с DVD на 3D принтер и получаем.
Таблица 1:
101 - 3D принтер
202 - USB HDD
Таблица 2:
1 | 101 | METKA_DVD
2 | 202 | METKA_HDD
3 | 101 | MODEL_PRINTER
В итоге первая запись ложная
Ибо данные могут изменяться в первой таблице.
Полная чушь ибо совершенно дикая организация данных.
Записан
Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
Re: Сохранение и отображение данных
«
Ответ #12 :
Апрель 04, 2013, 08:14 »
Да я о чем и толкую. У него справочник не статичный. Он вообще по теории справочником являться не может
Записан
LEO
Гость
Re: Сохранение и отображение данных
«
Ответ #13 :
Апрель 04, 2013, 08:58 »
в данной ситуации нужна именно дикая организация данных
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...