Я создал функцию, к которой я пасс Дата и Срок и результат был бы Дата что предыдущий взнос ушедшей даты и времени. Ниже приведены примеры.Получить предыдущую дату рассрочка
Date (In) | Term (In) | Date (Out)
--------------+-----------------+--------------
22/02/2015 | Monthly | 22/03/2015
22/02/2015 | Quarterly | 22/02/2015
01/01/2015 | Monthly | 01/03/2015
24/03/2015 | Annually | 24/03/2015
Значение термина будет равно Ежемесячно, ежеквартально, ежегодно. Это функция, которую я сейчас имею, но не дает мне желаемых результатов.
Public Function getPrevInst(tmpDate As Date, tmpPeriod As String) As Date
Dim monthDiff As Integer, modVal As Integer, tmpFuncDate As Date, tmpMonDiff As Long
Select Case tmpPeriod
Case "Monthly"
modVal = 1
Case "Quarterly"
modVal = 3
Case Else
modVal = 12
End Select
monthDiff = DateDiff("m", tmpDate, LstDayPrevMnth(Date))
tmpMonDiff = IIf(monthDiff > 0, monthDiff - (monthDiff Mod modVal), IIf(monthDiff < 0, 0, 1))
tmpFuncDate = DateAdd("m", tmpMonDiff, tmpDate)
If tmpFuncDate >= Date Then
getPrevInst = DateAdd("m", monthDiff, tmpDate)
Else
getPrevInst = tmpFuncDate
End If
End Function
Public Function LstDayPrevMnth(InDate As Date) As Date
LstDayPrevMnth = DateSerial(Year(InDate), Month(InDate), 0)
End Function
Мой результат (очевидно, неправильно),
Date (In) | Term (In) | Date (Out)
--------------+-----------------+--------------
22/02/2015 | Monthly | 22/03/2015
22/02/2015 | Quarterly | 22/03/2015
01/01/2015 | Monthly | 01/02/2015
24/03/2015 | Annually | 24/02/2015
Если у вас есть лучший способ найти предыдущий взнос также будет приветствоваться. Если мой код ужасно ошибочен.
Дилетанты термин:
Петр заимствует кредит от меня. Он планирует вернуть его Monthly
, его первый взнос составляет 22 February 2015
. Если я открою его запись, мне нужно будет узнать, когда был последний платеж/уплачен. Итак, сегодня (24 марта 2015 года), я получил бы его первый платеж 22 February 2015
, 22 March 2015
(как 22 марта было два дня назад). Таким образом, последняя дата платежа равна 22 марта 2015 года.
Tom получает кредит от меня. Он планирует выплатить его ежемесячно, его первый взнос составляет 01 January 2015
. Если я открою его запись, мне нужно будет узнать, когда был последний платеж/уплачен. Так что сегодня (24 марта 2015 года) я получил бы свой первый платеж 01 January 2015
, 01 February 2015
и 01 March 2015
(так как 01 марта было 23 дня назад). Таким образом, последняя дата платежа равна 01 марта 2015 года.
Harry получает кредит от меня. Он планирует погасить его ежеквартально, его первый взнос составляет 22 February 2015
. Если я открою его запись, мне нужно будет узнать, когда был последний платеж/уплачен. Так что сегодня (24 марта 2015 года) я получил бы свой первый платеж 22 March 2015
(то есть, следующий платеж не должен появляться до 22 June 2015
, которого еще не было). Таким образом, последняя дата платежа равна 22 марта 2015 года.
Примечание: Cross размещен по адресу: http://www.access-programmers.co.uk/forums/showthread.php?t=276041