Название: Сохранение и отображение данных Отправлено: LEO от Апрель 03, 2013, 09:05 Господа, столкнулся с очень очень неприятной для себя проблемой и зашел в тупик в поиске решений, в двух словах о самой программе,человек вводит определенные данные они сохраняются в БД(SQLite) чтобы в последующем была возможность к ним обращаться при надобности, некоторые данные берутся из справочников, в данном случае их 2, данные из справочника вывожу в комбобокс, система работает следующим образом: при выборе определенного параметра в комбобоксе соответствующие данные подтягиваются в соответствующие поля лайнедита. Отображение идет с помощью датавиджетмэппера. Проблема в следующем,данные сохраняются в виде индексов что по идее верно, и при замене значения в справочнике, например фамилии оно поменяется во всей таблице где хранятся все общие сведения, чего бы не хотелось, как бы сделать так чтобы при замене данных в справочнике данные в общей таблице где хранятся все введенные данные не изменялись, для наглядности прикладываю то что удалось сделать на теперешний момент, запутался окончательно... :-\
Название: Re: Сохранение и отображение данных Отправлено: Bepec от Апрель 03, 2013, 09:21 Не смотрел проект, но это уже вторая тема про dataWidgetMapper. Наиболее простой вариант - используйте самописный обработчик и сохраняйте не индекс, а фамилию или что-там у вас :)
PS это проблема архитектуры если честно. В справочнике должна храниться статическая информация. Если же в какой то момент времени информация из справочника может измениться, значит следует либо создавать снапшоты справочника и привязывать значения таблицы ко времени, или же отказаться от справочника. this моё мнение :) Название: Re: Сохранение и отображение данных Отправлено: GreatSnake от Апрель 03, 2013, 10:02 Если все связи делать через ROWID (http://www.sqlite.org/autoinc.html), то никаких проблем не должно быть.
Название: Re: Сохранение и отображение данных Отправлено: LEO от Апрель 03, 2013, 13:37 в общем решил пойти простым путем и записывать текстовые данные в основную таблицу,а не индексы, однако как сделать это через комбобокс не очень понял и решил сделать с помощью лайнедит+комплитер, но не могу понять почему сохраняются только данные которые я ввожу в комплитер, а данные которые подтягиваются и отображаются в других лайнедитах и привязаны в datawidgetmapper не сохраняются в базе... :(
Цитировать Если все связи делать через ROWID (http://www.sqlite.org/autoinc.html), то никаких проблем не должно быть. если завязать все на айдишнике, то изменив запись 123|директор|иванов| на 123|слесарь|иванов| должности везде поменяются, или я не так понял...Название: Re: Сохранение и отображение данных Отправлено: GreatSnake от Апрель 03, 2013, 17:14 если завязать все на айдишнике, то изменив запись 123|директор|иванов| на 123|слесарь|иванов| должности везде поменяются, или я не так понял... запись должна быть типа123|id_для_директор|иванов| на 123|id_для_слесарь|иванов| id_для_директор и id_для_слесарь держать в отдельной таблице position Название: Re: Сохранение и отображение данных Отправлено: Bepec от Апрель 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 В итоге первая запись ложная :) Ибо данные могут изменяться в первой таблице. Название: Re: Сохранение и отображение данных Отправлено: panAlexey от Апрель 03, 2013, 21:03 Да уж. Я уже сам запутался.
То ли у вас проблема с формализацией объекта (выделение постоянных свойств объекта в отдельную таблицу), то ли проблема логирования и отображения смены постоянных (идентификационных) свойств объекта. И с той и с другой проблемой сталкивался, но которая у вас с первой читки не понял ((( На всякий вам бы курс пройти по моделированию баз данных. Название: Re: Сохранение и отображение данных Отправлено: panAlexey от Апрель 03, 2013, 21:08 как бы сделать так чтобы при замене данных в справочнике данные в общей таблице где хранятся все введенные данные не изменялись, для наглядности прикладываю то что удалось сделать на теперешний момент, запутался окончательно... Была такая проблема.Предметная область - ремонт. Телефон в ремонте идентифициируется по имею. НО при замене платы меняется и имей. Вышел из положения введя понятие партии ремента с кодом, где имеи пишутся рядышком. Т.е. заменил строку на элемент из таблицы в которой есть история. Название: Re: Сохранение и отображение данных Отправлено: LEO от Апрель 03, 2013, 21:22 Вот Верес все пояснил на примере впринципе так как и я понимаю, впринципе так и есть так работает система связи и на мой взгляд, дело в том что там не такая уж и сложная база, там всего навсего 3 таблицы одна в которой все данные хранятся, остальные 2 справочники с которых берется инфа для заполнения большой таблицы где хранятся все данные, таким образом осуществляется хранение информации, в БД не асс не спорю , дело в другом, темы похожей не нашел, возможно где то и есть такая.
Приложил компиляберный вариант того что есть на сегодняшний день,буду думать завтра дальше... :( Название: Re: Сохранение и отображение данных Отправлено: Bepec от Апрель 03, 2013, 22:43 Я б предложил - повторюсь, не тормозить и сделать одной таблицей. Ибо меняющиеся данные в качестве справочных ох как не подходят :D
Название: Re: Сохранение и отображение данных Отправлено: LEO от Апрель 04, 2013, 07:56 :( :( :(Это не вариант, нужны справочники, они необходимы, сохранять в тексте надо просто научится в основную таблицу и отображать все как надо, с этим проблемы сейчас :( :( :(
Название: Re: Сохранение и отображение данных Отправлено: GreatSnake от Апрель 04, 2013, 08:06 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 В итоге первая запись ложная :) Ибо данные могут изменяться в первой таблице. Название: Re: Сохранение и отображение данных Отправлено: Bepec от Апрель 04, 2013, 08:14 Да я о чем и толкую. У него справочник не статичный. Он вообще по теории справочником являться не может :D
Название: Re: Сохранение и отображение данных Отправлено: LEO от Апрель 04, 2013, 08:58 >:( в данной ситуации нужна именно дикая организация данных
|