|
3#
楼主 |
发表于 2011-9-12 22:05:08
|
只看该作者
Public Function paymoney(N1, n2, n3) As Currency
'n1为该笔认购的到账时间,n2为本开放日即查询日,n3为本次赎回的份额
Dim rs1 As Recordset
Dim rs As Recordset
'Dim 累计收益 As Currency
Set rs1 = CurrentDb.OpenRecordset("select * from [8-1受益权收益率调整记录] where 受益权类型 like '活期'")
rs1.Sort = "调整日期 ASC"
Set rs = rs1.OpenRecordset '要中转一次后才能让排序生效,要据此计算出利息分段区间
'将持有期分解为每一天,截止日可以是当日,也可以是赎回日
d1 = Round(CDate(n2) - N1 + 1, 0)
d2 = N1 - 1 '到帐时间
累计收益 = 0
For i = 1 To d1
d2 = d2 + 1 '第一条记录为到帐时间
rs.MoveFirst '移动到收益率记录的最早一条记录
t = rs.RecordCount '统计出利率调整的段数
For i1 = 1 To (t - 1) '从利息表中取出两个相邻的收益率,组成段,循环判断每一天是否在本段内,t条记录,移动t-1次即到尾
t1 = rs.Fields(4) '某时间段的起点
rs.MoveNext
t2 = rs.Fields(4) '某时间段的终点
If d2 >= t1 And d2 < t2 Then
该日有效收益率 = rs.Fields(2)
Else: If d2 >= t2 Then 该日有效收益率 = rs.Fields(3)
当日收益 = (n3 * 该日有效收益率 / 365)
End If
Next i1
' MsgBox ("本日为" & d2 & "," & "收益率是" & 该日有效收益率 & "当日收益是" & 当日收益)
累计收益 = 当日收益 + 累计收益
Next i
' MsgBox ("累计收益是" & 累计收益)
paymoney = 累计收益 |
|