Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 12:50   #1
fori
 
Регистрация: 14.02.2012
Сообщений: 7
Восклицание Подбор согласно величине период и вывод результата в Access (функция if))

Всем привет!
Я новичек в Access и тем более в языках программирования. Но, я учусь...
Нужна ваша помощь в создании небольшой базы в помощь лаборантам и врачам, и прошу вас помочь советом или примером. У нас маленький мед.центр в области диетологии. Руководство поставило задачу по созданию БД в помощь сотрудникам. Чтобы они не выполняли одни и те же расчеты и не вели всё на бумаге.
Я предположил, что нужно создать и вести карточки пациентов, куда будет занесена информация по ним, все расчеты и рекомендации. Приведу пример: есть некий пациент "Иванов Степан Сергеевич", пол "мужской", его параменты: возраст 30 лет, масса тела 110 кг, рост 1,86м. Необходимо расчитать его Индекс массы тела (формула ИМТ=Масса тела, кг/Рост^2) и для данного пациента =31,8. Я в форме добавил поле для расчета с формулой и в форме производится расчет ИМТ.

Но, данные не сохраняються в таблице "Пациенты" в поле "ИМТ". Пока не знаю, как это сделать (после расчета вставлять в поле).

После расчета ИМТ (31,8) нужно из таблицы "ИМТ" совершить выборку согласно периоду от MAX до MIN. В зависимости от ИМТ выбрать Оценку. И Оценка для данного числа равна "1-я степень ожирения", я не знаю, как выполнять автоматический подбор исходя из периода. И как результат оценки заносить в таблицу "Пациенты" в поле "Оценка ИМТ".
И уже после проведения подбора ИМТ, необходимо подобрать "Рекомендации" согласно результатам "ИМТ", "Оценки ИМТ", "возраста" и "пол" (таблица для подбора с диапазоном - Рекомендации).
В этом случае Рекомендации будут для Иванов Степан Сергеевич - Физические упражнения №3 и добавить этот результат в таблицу Пациенты (чтобы сохранить историю и вывести отчет) в поле Рекомендации к Иванов Степан Сергеевич.
И конечно же для пациента распечатать отчет.

Очень прошу вашей помощи, не смогу сам разобраться. Пожайлуста. Если вам тяжело и не хватает времени для примера, то подскажите где можно искать или посмотреть пример или инфу.

Буду очень благодарен.

Может у кого есть пример такой БД иследовательской лаборатории.

Пожайлуста - помогите.

Базу приложил:
Вложения
Тип файла: rar ИМТ.rar (25.1 Кб, 20 просмотров)

Последний раз редактировалось fori; 27.03.2012 в 14:31. Причина: Исправил ошибки в тексте...
fori вне форума Ответить с цитированием
Старый 27.03.2012, 17:41   #2
fori
 
Регистрация: 14.02.2012
Сообщений: 7
Счастье Прошу помочь, кто может...

Помогите решить вопрос:

Попробую упростить задачу:
1. есть таблица1 с полями: а - число, в - число, с - текст, d - число (неизвестное), нужно вычислить формулу d=a/в полученный ответ "d" подставить в поле "d" таблицы1 (формулу в форме я вписал - считает, но как добавить значение в таблицу1 - не знаю).
2. есть таблица2 с полями d max - число, d min - число, e - текст, и в зависимости в какой диапазон попадает значение d с таблиці1 (от мах до min), выбрать поле с.
fori вне форума Ответить с цитированием
Старый 28.03.2012, 04:56   #3
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Так накропал навскидку событие конечно можно поменять. Лично мои рекомендации, так как вы указали что новичок:
- не использовать кирилицу в названиях полей, таблиц, переменных, элементов управления
- подумать над структурой базы, она важнее вычисляемых полей
- спрогнозировать изменения в базе, на предмет её усложнения, т.к. такой способ хранения данных мне представляется наиболее удобным, в вашем случае особенно, к примеру наверняка понадобиться история ведения больного, его приёмы у врачей, а это уже повлечёт за собой создание базы врачей ну и т.д.
- и наконец поизучать Access, или предложить работу специалистам
Вложения
Тип файла: rar ИМТ.rar (27.9 Кб, 21 просмотров)
satka вне форума Ответить с цитированием
Старый 28.03.2012, 11:28   #4
fori
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию Ответ на предложение...

Цитата:
Сообщение от satka Посмотреть сообщение
Так накропал навскидку событие конечно можно поменять (я заметил, только изменения в свойствах поля, включили Данные - "ОценкаИМТ" - а подстановку и выборку он не производит исходя из результата расчета ИМТ).

Лично мои рекомендации, так как вы указали что новичок:
- не использовать кирилицу в названиях полей, таблиц, переменных, элементов управления (сделаем...)

- подумать над структурой базы, она важнее вычисляемых полей (понял)

- спрогнозировать изменения в базе, на предмет её усложнения, т.к. такой способ хранения данных мне представляется наиболее удобным, в вашем случае особенно, к примеру наверняка понадобиться история ведения больного, его приёмы у врачей, а это уже повлечёт за собой создание базы врачей ну и т.д.

- и наконец поизучать Access, или предложить работу специалистам (вот и изучаю, вы же знаете, что без практики - теория ничего не стоит. А специалисты уже себя показали - не один... поэтому задачу возложили на меня)
Если вас не затруднит, покажите или подскажите, как работать с поле подстановка с вычислением.
fori вне форума Ответить с цитированием
Старый 28.03.2012, 12:18   #5
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Прошу прощения, забыл указать, что происходит вычиление ИМТ, после обновления поля Масса_тела или обновления поля Рост, тогда же Поле13 присваивает значение первому найденому результату в таблице ИМТ. Это можно увидеть открыв код события "после обновлениия" поля Масса_тела. И кстати забыл упомянуть что в определении оценки у вас пересекаются диапазоны, долго смотрел — так ничего и не понял как пределить степень ожирения, та же ситуация с рекомендациями.
И ещё я вам советую для начала изучить например этот сайт.

Последний раз редактировалось satka; 28.03.2012 в 12:20.
satka вне форума Ответить с цитированием
Старый 28.03.2012, 13:33   #6
fori
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от satka Посмотреть сообщение
Прошу прощения, забыл указать, что происходит вычиление ИМТ, после обновления поля Масса_тела или обновления поля Рост, тогда же Поле13 присваивает значение первому найденому результату в таблице ИМТ. Это можно увидеть открыв код события "после обновлениия" поля Масса_тела. И кстати забыл упомянуть что в определении оценки у вас пересекаются диапазоны, долго смотрел — так ничего и не понял как пределить степень ожирения, та же ситуация с рекомендациями.
И ещё я вам советую для начала изучить например этот сайт.
У меня ничего нового не работает с вашего примера. Я в приложении добавлю скриш-шоты. Но БД не изменилась, только появился новый макрос "~TMPCLPMacro", а в самой процедуре обработки (код VBA) ничего не поменялось. И в самой форме тоже...
Изображения
Тип файла: jpg Снимок.jpg (123.3 Кб, 131 просмотров)
fori вне форума Ответить с цитированием
Старый 28.03.2012, 13:53   #7
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Видимо проблема в версии Access.
Re:
Вложения
Тип файла: rar ИМТ.rar (27.9 Кб, 16 просмотров)
satka вне форума Ответить с цитированием
Старый 28.03.2012, 14:10   #8
fori
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от satka Посмотреть сообщение
Видимо проблема в версии Access.
Re:
К сожалению, тоже самое, только теперь вообще отсутствует инфо в свойствах полях (пустые поля). Я уже попробывал открыть на другом компе в 2003 - тоже самое. Может у вас есть возможность написать, что мне нужно сделать?
fori вне форума Ответить с цитированием
Старый 28.03.2012, 14:44   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

fori
не подтверждаю.
Вы форму открывали? Рост меняете, ИМТ изменяется?!
Потому что у меня пример от Satka работает! (у меня MS Access 2007)

А изменение назначено на событие "Рост" - "События" - "После обновления"
назначен код Sub Рост_AfterUpdate():
Код:
Private Sub Масс_тела_AfterUpdate()
If Len(Масс_тела.Value) <> 0 And Len(Рост.Value) <> 0 Then
    ИМТ.Value = Round(Масс_тела.Value / Рост.Value ^ 2, 2)
    Поле13 = DFirst("[Оценка]", "ИМТ", " MinИМТ < " & Val(ИМТ.Value))
End If

End Sub

Private Sub Рост_AfterUpdate()
  Масс_тела_AfterUpdate
End Sub



p.s. Режим "Grammar-nazy" включён!
"Возвраст:" и "Масс тела:" - написаны неграмотно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.03.2012, 15:00   #10
fori
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
fori
не подтверждаю.
Вы форму открывали? Рост меняете, ИМТ изменяется?!
Потому что у меня пример от Satka работает! (у меня MS Access 2007)

А изменение назначено на событие "Рост" - "События" - "После обновления"
назначен код Sub Рост_AfterUpdate():
Код:
Private Sub Масс_тела_AfterUpdate()
If Len(Масс_тела.Value) <> 0 And Len(Рост.Value) <> 0 Then
    ИМТ.Value = Round(Масс_тела.Value / Рост.Value ^ 2, 2)
    Поле13 = DFirst("[Оценка]", "ИМТ", " MinИМТ < " & Val(ИМТ.Value))
End If

End Sub

Private Sub Рост_AfterUpdate()
  Масс_тела_AfterUpdate
End Sub



p.s. Режим "Grammar-nazy" включён!
"Возвраст:" и "Масс тела:" - написаны неграмотно.
Спасибо. Все увидел...
fori вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод результата Илья- Общие вопросы C/C++ 0 16.11.2011 17:29
Вывод результата блоками nervniy Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2011 20:26
[access]реализовать вывод отчёта продажи за определённый период времени nuevegramodelamor Фриланс 1 18.04.2011 09:50
Вывод результата Delphi Nikita++ Помощь студентам 5 20.12.2010 15:48
Подсчет и вывод результата... sew960i Microsoft Office Excel 18 31.01.2010 14:04