Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Подсчет процентов в запросе


Автор: Samhein 12.11.2009, 18:36
Задали написать "БД вкладчиков сбербанка".
По идее, проценты должны подсчитываться за каждый год.
Но как итоговое число получить в запросе я понять не могу, тк надо сначала подсчитать процент за 1 год, потом основываясь на полученной цифре считать второй год и так далее.
Как я думаю, здесь должен быть цикл. Но как это оформить?

Заранее благодарю.

Автор: bopoha 12.11.2009, 20:07
Samhein, это не делается в запросе. Это в VBA лучше написать. Пользуясь запросами для вычислений.

Автор: Samhein 12.11.2009, 20:28
Ок. Спасибо. Не подскажете ещё, как из VBA выполнить SQL (потребуется для использование UPDATE)?

Автор: Akina 12.11.2009, 21:15
Цитата(Samhein @  12.11.2009,  21:28 Найти цитируемый пост)
как из VBA выполнить SQL 

DoCMD.RunSQL()

И прочитайте ещё раз Правила. Особенно п. 10.

Автор: FINANSIST 13.11.2009, 16:44
Цитата(Samhein @  12.11.2009,  18:36 Найти цитируемый пост)
По идее, проценты должны подсчитываться за каждый год.

Возможны и ежеквартальные, и ежемесячные(это чаще всего) начисления процентов- определись с заданием


Цитата(Samhein @  12.11.2009,  18:36 Найти цитируемый пост)
Но как итоговое число получить в запросе я понять не могу, тк надо сначала подсчитать процент за 1 год, потом основываясь на полученной цифре считать второй год и так далее.


Кратчайший экскурс в основы финансовой математики
Формула начисления простых процентов (это когда процент наращивается на первоначальную сумму)
S = P+P*N*I, где S - Конечная сумма в момент завершения договора по депозитам, P - первоначальная сумма, I - процентная ставка за период t(может быть год ,квартал или месяц), N - количество периодов t.
То есть если вложить 100000 под 15% годовых на 2 года , то 
S=100000*100000*0,15*2=130000

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


Для сложных процентов (начисление процентов не от первоначальной а от наращенной суммы т.е. капитализация процентов) S= P*(1+I)^N, где I должен быть сопоставим с N, т.е. если капитализация (приращение процентов на основе достигнутой суммы) ежеквартальное, то при годовой ставке 15% под 2 года S = 100000(1+0.15/4)^(2*4)

Кстати  даже VBA не нужен, обычный sql с вычисляемыми полями это осилит
P.S Если  вкладчик будет с заданной регулярностью докладывать фиксированный суммы, даже на этот случай есть готовая формула получения конечной суммы (это уже аннуитетные платежи), лень её печатать, да и вряд ли в задании такой случай предусмотрен...

Автор: Samhein 13.11.2009, 17:31
FINANSIST, спасибо за упоминание аннуитетных платежей.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)