Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Реализация древовидной БД в MMB
romeroДата: Воскресенье, 23 Марта 2008, 16:14 | Сообщение # 1
Новый участник
Группа: Пользователи
Сообщений: 3
Репутация: 0
Награды: 0
Статус: Offline
Давно пользуюсь MMB, очень устраивает и всегда радует! Сегодня встал в тупик, из которого самому выйти трудно.
Помогите пожалуйста реализовать программу с древовидной БД. Итак, что я собственно хочу:
Для начала немного вступления smile Последний год, в связи с перенесенной болезнью, у меня скачет температура тела, и врач посоветовал 4 раза в день мерить температуру(Утро, обед, вечер, ночь) для последующего анализа. Но писать все это на листочках, очень неэффективно, муторно и неудобно, я решил сделать программу на MMB для мониторинга температуры тела. В принципе, сделать это просто! Но как быть, если нужно записывать данные, допустим двух, трех, четырех людей? Абстрактно представляю это так: Два SongList, в одном Имя и Фамилия человека, второй SongList - данные о температуре данного человека. Возле каждого SongList\'a по три кнопки \"Добавить\", \"Удалить\", \"Редактировать\" и под всем этим делом вывод более подробной информации. И конечно же, кнопка печати всех подробных данных Выбранного человека.

В прикрепленном файле примерное графическое представление идеи.

Пожалуйста, помогите реализовать мою идею. Предложите свои примеры решения данной задачи. Заранее благодарен!

Прикрепления: 6149139.jpg (45.3 Kb)
 
toizyДата: Воскресенье, 23 Марта 2008, 23:58 | Сообщение # 2
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Самый простой вариант - по файлу на каждого больного. каждая строка файла содержит всю необходимую информацию, разделённую делимитером, например:
23,03,2008#Утро#36,3#

Для извлечения 1, 2 и 3 элемента такой записи использовать GetArrayItem. Простая база, можно ссказать, готова. При старте программы искать файлы пациентов в заранее определённой папке, расположенной, например, в корневом каталоге программы.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Понедельник, 24 Марта 2008, 00:31 | Сообщение # 3
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Для хранения данных в древовидной структуре, используется XML,
в данном случае, нет необходимости организации древовидной структуры.
Ибо, необходимые данные, вполне могут быть описаны линейными записями,
в виде двух взаимосвязанных даблиц (баз данных).
Первая таблица содержит поля 1-ФИО, 2- то что в боксе "Пациент", 3 - а так же служебное
поле с идентификатором, для связи со второй таблицей (номер пациента).
Вторая таблица содержит 1- идентификатор(номер пациента)., 2 - дату и
параметры измерений, 3- доп. инфу (то что утебя в низу с лева).
Алгоритм доступа - считываем все ФИО в бокс, при выборе конкретного,
ищем ФИО в первой базе (получаем номер записи), считываем всю строку первой
базы - идентификатор (будет использован для поиска во второй таблице),
поля 2 и 3 заносим в соответствующий бокс.
Затем ищем все записи выбраного пациента (по номеру пациента), выводим в бокс.
При выборе конкретной записи - выводим доп. информацию.
Можно применять базу данных на основе текстового файла (на форуме множество
болтовни по ее использованию), или на основе файлов dbf формата, применяя мой плагин.

Добавлено (24 Март 2008, 00:31)
---------------------------------------------

Quote (toizy)
по файлу на каждого больного

Quote (toizy)
файлы пациентов в заранее определённой папке

Это не очень изящное решение, а если romero захочет "подсадить"
целую больницу? Много мелких файлов вредно для дискового пространства!
Минимум по кластеру на файл!
 
toizyДата: Понедельник, 24 Марта 2008, 18:12 | Сообщение # 4
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (Alex3A)
Это не очень изящное решение

Я не думаю, что ему надо сделать досье на всю больницу. В противном случае, как я сказал, это самое простое решение. Тогда можно будет попробовать другие варианты. База в qip, кстати, именно по такому принципу.

Добавлено (24 Март 2008, 18:12)
---------------------------------------------
И всё-таки, подумав, я предлагаю использовать способ с несколькими разными файлами. Если уж пациентов будет столько, что любой винт удавится, тогда уже надо использовать плагин. Но мне кажется, что больница закажет себе специальный софт smile А насчёт мелких файлов... ну, пусть будет их штук 100... Сильно ли возрастёт фрагментация?

Реализация может быть, например, такой. Создаём на каждого пациента файл, каждая строка которого будет иметь вид
23,03,2008#Утро#36,3#День#36,3#Вечер#36,3#
Таким образом, одна строка будет содержать данные на целый день. Затем, поскольку файлов может быть несколько и делать SearchForFiles может быть долго, заводим специальный файлик, например, Entries.txt, в который будем писать имя каждого файла с пациентом (также по одному на строку). При загрузке программы читаем Entries.txt и выводим список пациентов в листбокс. А уже при щелчке на листбоксе загружаем соответствующий пациенту файл и выводим на экран.

А если хранить всё в одном файле, то будет очень неудобно... Это был мой вариант


Жизнь оказалась не такой уж и забавной, как поначалу...
 
romeroДата: Понедельник, 24 Марта 2008, 21:54 | Сообщение # 5
Новый участник
Группа: Пользователи
Сообщений: 3
Репутация: 0
Награды: 0
Статус: Offline
Я реализовал все очень простым образом, аж стыдно smile
Я просто прибиндил в проект программу TablePro, которая работает с таблицами csv, предварительно убрав все лишние кнопки и функции с TablePro, которые мне не нужны(благо настройки программы это позволяют). А чтоб программа TablePro не красовалась рядом с моим приложением, изменил ее расширение с *.exe на *.dll smile Ну и конечно же всю базу сделал на CSV smile Вот так все просто оказалось smile Работает как часы! Ни каких проблем и багов еще не выскакивало! Теперь можно и целую больницу подсаживать на это happy
 
Alex3AДата: Понедельник, 24 Марта 2008, 23:12 | Сообщение # 6
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Ну прибилдить можно много чего, csv формат то же отрыжок базы, пока не возникнет проблем
с переносимостью, размером и прочих вопросов, можешь считать свою проблему решенной.
К стати. работать будет быстрее чем с базой типа 23,03,2008#Утро#36,3#День#36,3#Вечер#36,3#.
 
  • Страница 1 из 1
  • 1
Поиск: