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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2015, 22:07   #1
UR4N
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 21
По умолчанию как реализовать excelевскую формулу в ACCESS

Гуру ACCESSа подскажите пожалуйста. Есть два столбца 1- "Дата последнего МК",например 12.12.2012 . 2-"Периодичность МК" это количество месяцев, например 36. И в третьем столбце под названием "Дата следующего МК" прописывалась в excel формула =ДАТАМЕС(А1;А2), и вычислялась дата 12.12.2015.
Подскажите как такое можно реализовать в ACCESS 2010.
UR4N вне форума Ответить с цитированием
Старый 20.05.2015, 22:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я, хоть и не "Гуру Access", могу подсказать решение.

пользуйтесь функцией DateAdd
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2015, 22:22   #3
UR4N
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я, хоть и не "Гуру Access", могу подсказать решение.

пользуйтесь функцией DateAdd
Согласен, что DateAdd подходит. Но как это выражение вставить в таблицу? В запросе Выражение1: DateAdd("m";[Периодичность МК];[Дата последнего МК]) прекрасно работает, но из запроса результат в таблицу не вставляется.
UR4N вне форума Ответить с цитированием
Старый 20.05.2015, 22:55   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
select [Дата последнего МК], 
  [Периодичность МК], 
  DateAdd("m";[Периодичность МК];[Дата последнего МК]) as [Дата следующего МК]
  from ВашаТаблица
сохрание этот запрос и обращайтесь к нему по имени.
Он и будет возвращать то, что Вам нужно.


p.s. если поступать НЕПРАВИЛЬНО, тогда можно добавить третий столбец в таблицу и выполнить update таблица set Столбец3 = dateadd....
Это будет работать. НО ЭТО НЕПРАВИЛЬНО!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2015, 23:05   #5
UR4N
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
select [Дата последнего МК], 
  [Периодичность МК], 
  DateAdd("m";[Периодичность МК];[Дата последнего МК]) as [Дата следующего МК]
  from ВашаТаблица
сохрание этот запрос и обращайтесь к нему по имени.
Он и будет возвращать то, что Вам нужно.


p.s. если поступать НЕПРАВИЛЬНО, тогда можно добавить третий столбец в таблицу и выполнить update таблица set Столбец3 = dateadd....
Это будет работать. НО ЭТО НЕПРАВИЛЬНО!
Просветите если не трудно куда вставлять этот код? (по подробней)
UR4N вне форума Ответить с цитированием
Старый 20.05.2015, 23:24   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

закладка "Создание" - "Конструктор запросов" - закрыть окно мастера выбора таблицы - правой кнопкой мышки на поле ввода - выбрать "Режим SQL"
там вставить данный текст.
вместо ВашаТаблица напишите имя вашей таблицы в квадратных скобках.
Выберите сохранить (Ctrl-S) - укажите имя запроса.
всё. Теперь щелчок по этом имени в панели навигации выполнит нужный код.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.05.2015, 19:59   #7
UR4N
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
закладка "Создание" - "Конструктор запросов" - закрыть окно мастера выбора таблицы - правой кнопкой мышки на поле ввода - выбрать "Режим SQL"
там вставить данный текст.
вместо ВашаТаблица напишите имя вашей таблицы в квадратных скобках.
Выберите сохранить (Ctrl-S) - укажите имя запроса.
всё. Теперь щелчок по этом имени в панели навигации выполнит нужный код.
Благодарю за обучение.
Но получилось тоже самое, что и если просто создать запрос и построить выражение. В итоге получается запрос, при активации которого происходит подсчет. Но мне надо, чтоб результат вставлялся в таблицу в столбец.
Вот в чём дело. Как мне результат вычисления вставить в таблицу? И что бы при изменении любых из двух полей происходило автоматическое вычисление
UR4N вне форума Ответить с цитированием
Старый 21.05.2015, 22:58   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от UR4N Посмотреть сообщение
Благодарю за обучение.
Пожалуйста. я всегда рад помочь.
Цитата:
Сообщение от UR4N Посмотреть сообщение
Но получилось тоже самое, что и если просто создать запрос и построить выражение. В итоге получается запрос, при активации которого происходит подсчет.
верно. Вот его И ИСПОЛЬЗУЙТЕ ВМЕСТО исходной таблицы всегда, когда Вам нужно получить не только первые два столбца, но и третий.

Преимущества
- третий столбец ВСЕГДА актуален (т.к. вычисляется "на лету")
- время на вычисления тратится только тогда, когда этот столбец нужен.
- в БД не хранится излишняя информация (экономия места)
- нет возможности нарушить бизнес-логику путём внесения в три столбца несвяанных данных.


Цитата:
Сообщение от UR4N Посмотреть сообщение
Но мне надо, чтоб результат вставлялся в таблицу в столбец.
Вот в чём дело. Как мне результат вычисления вставить в таблицу? И что бы при изменении любых из двух полей происходило автоматическое вычисление
Господи! Да НЕ НАДО Вам этого!!

Но если Вы ТОЧНО уверены, что всё вышесказанное не для Вас и Вам реально для чего-то нужен в таблице третий столбец, с которым Вы имеете кучу проблем, тогда делайте следующее
тогда:

1) добавляйте в таблицу третий столбец (например, [Дата следующего МК] )
2)
выполняйте его заполнение c помощью запроса на обновление данных:

Код:
update <ИмяВашейТаблицы> 
 set [Дата следующего МК]  = DateAdd("m";[Периодичность МК];[Дата последнего МК])
3) во всех местах, где могут изменить первый или второй столбец прописывайте аналогичный код.

Если нужно, чтобы обновление выполнялось автоматически, то гуглите, что такое триггеры и ... переходите на нормальную СУБД, где эти триггеры есть, насколько я знаю, в MS Access такое функциональности нет.

Успехов!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.05.2015, 23:27   #9
UR4N
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Пожалуйста. я всегда рад помочь.

верно. Вот его И ИСПОЛЬЗУЙТЕ ВМЕСТО исходной таблицы всегда, когда Вам нужно получить не только первые два столбца, но и третий.

Преимущества
- третий столбец ВСЕГДА актуален (т.к. вычисляется "на лету")
- время на вычисления тратится только тогда, когда этот столбец нужен.
- в БД не хранится излишняя информация (экономия места)
- нет возможности нарушить бизнес-логику путём внесения в три столбца несвяанных данных.



Господи! Да НЕ НАДО Вам этого!!

Но если Вы ТОЧНО уверены, что всё вышесказанное не для Вас и Вам реально для чего-то нужен в таблице третий столбец, с которым Вы имеете кучу проблем, тогда делайте следующее
тогда:

1) добавляйте в таблицу третий столбец (например, [Дата следующего МК] )
2)
выполняйте его заполнение c помощью запроса на обновление данных:

Код:
update <ИмяВашейТаблицы> 
 set [Дата следующего МК]  = DateAdd("m";[Периодичность МК];[Дата последнего МК])
3) во всех местах, где могут изменить первый или второй столбец прописывайте аналогичный код.

Если нужно, чтобы обновление выполнялось автоматически, то гуглите, что такое триггеры и ... переходите на нормальную СУБД, где эти триггеры есть, насколько я знаю, в MS Access такое функциональности нет.

Успехов!
Огромное спасибо!!! всё получилось...
Ну вот надо мне и всё, что бы результат хранился в таблице
UR4N вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать функцию СЧЕТ ЕСЛИ в отчете access? virusenco Microsoft Office Access 1 28.05.2013 09:48
Combobox + Access, как это возможно реализовать? HAMMAN Общие вопросы Delphi 3 27.12.2012 21:44
Как реализовать такую формулу Сальвия Общие вопросы Delphi 1 10.06.2012 19:40
Как реализовать такую форму ввода (Delphi + Access) ZBEP БД в Delphi 4 25.05.2011 06:44
Как написать формулу в Access? Ibkis Помощь студентам 2 28.05.2010 17:36