0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 10
|
|
1 | |
Вычисления в Access12.09.2010, 20:54. Показов 9067. Ответов 19
Метки нет (Все метки)
Доброго времени суток!
Помогите пожалуйста химикам разобраться с базой данных... Интересует вопрос, можно ли, чтобы в таблице данных производились расчеты - например, дата выпуска реактива и срок годности - забивается... А вот дата, до которой годен реактив - чтобы вычислялась на основе этих двух данных автоматически (как, например, это обычно происходит в excel'е? Или это не позволяет делать программа в таблице, а только в формах и отчетах? И если таки такое возможно - подскажите, какие условия!!! Заранее спасибо. С уважением, Дмитрий.
0
|
12.09.2010, 20:54 | |
Ответы с готовыми решениями:
19
Вычисления в Access 2007 Вычисления в запросе access Связи и Вычисления в запросе access MS Access БД вычисления в запросах и отчетах |
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
|
|
12.09.2010, 22:12 | 2 |
Здравствуйте Дмитрий.
"..можно ли, чтобы в таблице данных производились расчеты.." нет не только возможности, но и необходимости, подобная информация отображается в таблице формируемой запросом. например запрос: "SELECT Date(), Date()+10" отобразит две даты, текущую и текущую плюс десять дней. В Вашем случае возможно реализовать так: 1. создайте в таблице поле для даты выпуска - Поле1 2. создайте в таблице поле для кол-ва дней (срок годности) - Поле2 3. SQL конструкция : SELECT Поле1 AS Выпуск, Поле1 + Поле2 AS [Годен до] From Table [Имя таблицы] отобразит необходимые данные (без сохранения) Примерно так. Евгений.
2
|
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 10
|
|
13.09.2010, 16:57 [ТС] | 3 |
Евгений, спасибо, что откликнулись...
подробный ответ!!! и еще один маленьких вопросик... можно ли проводить манипуляции с датой выпуска плюс срок хранения, но не в днях, а месяцах и годах... как при этом изменится запрос? С уважением, Дмитрий.
0
|
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
|
|||||||||||
13.09.2010, 17:11 | 4 | ||||||||||
Просче производить вычисление в форме, используя подпрограмму:
1
|
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 10
|
|
13.09.2010, 18:09 [ТС] | 5 |
я к сожалению... не владею языками программирования...
как всем этим пользоваться... прошу прощения за недальновидность...
0
|
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
|
||||||||||||||||
13.09.2010, 18:09 | 6 | |||||||||||||||
Здравствуйте Дмитрий.
большой плюс диалекта SQL применяемого в MS Access это возможность использования VBA функций (в том числе и пользовательских) в теле запроса. создайте подобную функцию :
HOUSE MD "..используя подпрограмму..", идея не плохая, но код может быть короче:
2
|
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 10
|
||||||
13.09.2010, 18:49 [ТС] | 7 | |||||
надо попробовать... может не так страшен SQL... но пока с трудом предполагаю... как это делается...
Добавлено через 27 минут Люди, подскажите пожалуйста еще... Выражение1: [Таблица1]![дата выпуска]+[Таблица1]![срок годности, мес] дата выпуска - формат "дата" срок годности - формат "число" в режиме запроса формула работает... но срок годности считает в днях... как это переделать в месяцы и годы? Добавлено через 6 минут когда переходишь в режим SQL, то выдается сообщение
0
|
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
|
||||||
14.09.2010, 08:39 | 8 | |||||
winddim, функция описанная выше, помещается в Модуль.
"..в режим SQL, то выдается сообщение.." - это "сообщение собственно и есть SQL конструкция запроса, а "режим SQL" это редактор. после создания функции разместите в SQL редактор подобную конструкцию:
Евгений.
0
|
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
|
||||||
14.09.2010, 09:44 | 9 | |||||
Доброго времени суток. Уважаемый Евгений.Заменил в своей базе подпрограмму определения возраста на Вашу. Не работает
0
|
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
|
|||||||||||
15.09.2010, 17:24 | 10 | ||||||||||
HOUSE MD простите действительно при ближайшем рассмотрении моя "наколенная" конструкция не выдерживает критики, предел Int - 32678 значит CInt(gdtBeginDate) скорее всего вызовет переполнение.
соответственно конструкция CInt(gdtBeginDate - gdtEndDate) будет работоспособна только если разница между датами не будет превышать 32768 дня. конечно для того что бы обойти это ограничение можно обратится к Long
1
|
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
|
||||||
15.09.2010, 19:02 | 11 | |||||
Евгений, большое Вам спасибо. Но все равно работает не корректно. В примере gdtBeginDate - 01.04.2010; gdtEndDate - 02.07.2010
0
|
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
|
|||||||||||
15.09.2010, 20:13 | 12 | ||||||||||
HOUSE MD, вся проблема в формате даты, проверьте как инициируются переменные gdtBeginDate и gdtEndDate. проблема явно в них. Даты обрабатываемые в VB(A) задаются форматом m/d/yyyy.
Убедиться Вы сможете вызвав процедуру командой :
Евгений.
1
|
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
|
||||||
15.09.2010, 20:28 | 13 | |||||
Уважаемій Евгений, а как на счет такой конструкции:
0
|
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
|
||||||
15.09.2010, 20:38 | 14 | |||||
HOUSE MD, подозреваю Вы хотите получить числа 0, 3, 1.
не знаю зачем, но попробуйте так:
Евгений.
1
|
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
|
|
15.09.2010, 20:41 | 15 |
Спасибо Евгений, проверю. Вопрос стоит в корректности вычисления разности дат. Я врач. Програмирование - хобби. У детей до года возраст записывается с точностью до дня.
0
|
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
|
||||||
20.09.2010, 14:13 | 16 | |||||
Уважаемый Евгений ! Такой вариант короче. Хотелось бы услышать Ваше мнение:
0
|
1180 / 631 / 39
Регистрация: 30.05.2010
Сообщений: 715
|
|
20.09.2010, 19:45 | 17 |
Здравствуйте HOUSE MD.
назначение функции DatePart - отображение части содержимого поля даты. если эта "часть" Вас устраивает, то почему бы не пользоваться? о функции DatePart есть упоминание в справке А97 (в архиве) (это была единственная полностью русифицированная (включая VBA) справочная система MS Office) Евгений.
1
|
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
|
|
20.09.2010, 19:50 | 18 |
У меня не работает (под W7). Но запущу на другом компе. Спасибо.
0
|
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 10
|
|
08.10.2010, 10:49 [ТС] | 19 |
Всем спасибо за ответы! Еще как вариант решения проблемы, с которой я столкнулся и просил помощи - это создание запроса и там посредством построителя выражений и функции DateAdd можно решать подобные проблемы.
0
|
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 10
|
|
08.10.2010, 11:09 [ТС] | 20 |
Но вот еще возникла такая ситуация. Речь идет о складе химических реактивов.
есть таблица, где указываются паспортные сведения о реактиве - дата выпуска, степень чистоты, производитель, срок хранения, а также масса при поступлении. затем, в запросе отображается срок, до которого годен реактив (делается, как я писал выше, с помощью функции DateAdd). вопрос в следующем. каким образом лучше организовать списание реактива по мере его использования, например, каждодневно? т.е. у каждого реактива есть свой порядковый номер (совпадает со значением счетчика в таблице). я вижупримитивный вариант решения вопроса - сделать таблицу (связанную с первой талицей) и там забивать вручную расход, а затем, например, в том же запросе, где выводится информация о дате, до которой годен реактив, считать остаток на начало следующего дня. Но это все страшно неудобно - придется каждый раз пролистывать таблицу в поиске нужного реактива. Фантазия просит , чтобы было примерно так - в неком окне вводится порядковый номер реактива и масса использованного реактива (причем в течение одного дня может несколько раз использоваться один и тот же реактив), а программа суммирует расход и считает остаток... И. при необходимости, можно вывести отчет... Можно ли такое сделать? если да, помогите пожалуйста!
0
|
08.10.2010, 11:09 | |
08.10.2010, 11:09 | |
Помогаю со студенческими работами здесь
20
не могу понять вычисления в access Вычисления в Access :вычислить заработную плату Как записать вычисления в базу данных Access Как в Access создать формулу для вычисления суммы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |