Àëãîðèòì äëÿ ðàñ÷åòà ïåíè â VBA
|
|
Ïîíåäåëüíèê, 18 Ìàÿ 2015 ã. 09:41
+ â öèòàòíèê
Åñòü ðàíæèðîâàííûé ïî äàòàì çàïðîñ, ãäå íàõîäÿòñÿ âûñòàâëåííûå ïëàòåæè (1) è ïðîïëàòû (2).
Äàòà âûñòàâëåííîãî ïëàòåæà è åñòü äåíü ñ êîòîðîãî íà÷èñëÿåì ïåíþ.

×-ç êîä ÂÁÀ õî÷ó ïîñ÷èòàòü ïåíþ íà òåêóùèé äåíü è äîëã, êîòîðûå íåîáõîäèìî âûãðóçèòü â òàáëèöó

Íèêàê íå ìîãó ïðîäóìàòü àëãîðèòì ðàñ÷åòà. Ïëàòåæè ìîãóò èäòè â ðàçíîáîé, íåñêîëüêèìè ñóììàìè, ïåíþ ìîãóò îïëàòèòü è â îñíîâíîì ïëàòåæå, à íå îòäåëüíî. Èçíà÷àëüíî ïëàòåæè äîëæíû ãàñèòü îñíîâíîé äîëã, çàòåì ïåíþ.
 öåëîì ïîíèìàþ, ÷òî íà êàæäóþ äàòó â òàáëèöå íåîáõîäèìî ñ÷èòàòü áàëàíñ è ïðè äîëãå âû÷èñëÿòü ïåíþ.
Íèæåïðèâåäåííûé êîä íå ïðåòåíäóåò íà ïðàâèëüíîñòü, ïðîñòî âûáðàííîå íàïðàâëåíèå äâèæåíèÿ â ðàñ÷åòå.
| + |
Oplatit = 0
Oplata = 0
Set rcdPlateji = CurrentDb.OpenRecordset("Ïåíÿ2")
rcdPlateji.MoveFirst 'íà ïåðâóþ çàïèñü
Do While Not rcdPlateji.EOF 'ïðîñìîòð âñåãî çàïðîñà Ïåíÿ2
KodStudend = rcdPlateji![ÊîäÑòóäåíòà]
PenjaSumm = 0
Do While rcdPlateji![ÊîäÑòóäåíòà] = KodStudend ' ïðîñìîòð âñåõ ïëàòåæåê äëÿ ñòóäåíòà
If rcdPlateji![ÒèïÏëàòåæêè] = 1 Then
Oplatit = Oplatit + rcdPlateji![ÑóììàÏëàòåæà]
OplataPo = rcdPlateji![ÄàòàÏëàòåæà]
Else
Oplata = Oplata + rcdPlateji![ÑóììàÏëàòåæà]
PlategkiOt = rcdPlateji![ÄàòàÏëàòåæà]
End If
If Dolg > 0 And Oplata > 0 Then
KOlDni = DateDiff("d", OplataPo, PlategkiOt)
Penja = Dolg * KOlDni * 0.001
PenjaSumm = Penja + PenjaSumm
Dolg = Oplatit - Oplata
End If
rcdPlateji.MoveNext
Loop
Loop
|
ÏÑ: ñàì ïî îáðàçîâàíèþ íå ïðîãðàììèñò, èùó ïîõîæèå îáðàçöû êîäà è ïûòàþñü àäàïòèðîâàòü ê ñâîèì íóæäàì.  äàííîì ñëó÷àå çàñòðÿë((.
http://www.sql.ru/forum/1157084/algoritm-dlya-rascheta-peni-v-vba
-
Çàïèñü ïîíðàâèëàñü
-
0
Ïðîöèòèðîâàëè
-
0
Ñîõðàíèëè
-