Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

没能有效判断是否到记录尾

晓学生  发表于:2013-07-09 17:53:14  
复制

01

 

总提示错误,应该是没能有效判断是否到记录尾,但是试了几次没会。

Private Sub Command33_Click()
Dim mydb As Database '为使用记录向下移动,并判断是否到数据库尾功能,定义表型变量
Dim rst As Recordset '为使用记录向下移动,并判断是否到数据库尾功能,定义记录型变量
Dim syll_tem1 As Double '为计算利息,定义变量,临时储存“适用利率”变量
Dim rzjy_tem1 As Double '计算利息时需用要融资结余金额,故定义此变量,储存临时数据。
Dim rq_tem1 As Date '为计算利息,储存第一个日期,定义变量。
Dim rq_tem2 As Date '为计算利息,储存第二个日期,定义变量。
Dim rq_tem3 As Double '为计算二个日期间的天数,定义变量,储存临时数据
Dim fxje_tem1 As Double '为累计计算付息金额,定义变量,储存临时数据。
Set mydb = CurrentDb '定义当前打开的数据库为MYDB
Set rst = mydb.OpenRecordset("biao", dbOpenTable) '定义biao表为rst
fxje_tem1 = 0 '定义初始数据
Do Until rst.EOF '以是否到表的尾为判断标志
syll_tem1 = Me.SYLL '将“适用利率”赋值变量,为计算利息做准备。
rzjy_tem1 = Me.RZJY '将“融资结余”赋值变量,为计算利息做准备。
rq_tem1 = Me.RQ '将第一个日期赋值变量,然后再与第二日期运算,求得利息天数。
rst.MoveNext
DoCmd.GoToRecord , , acNext '将下一个记录作为当前记录,以便使计算结果赋值成功。
rq_tem2 = Me.RQ '将第二个日期赋值变量,然后与第一个日期运算,算出利息天数。
rq_tem3 = DateDiff("d", rq_tem1, rq_tem2) '计算利息天数
fxje_tem1 = (syll_tem1 / 360) * rq_tem3 * rzjy_tem1 + fxje_tem1 '累计计算利息数额
If Me.FXBH > 0 Then '此控制的作用是只在付息日算出利息数额,其他情况下只是进行利息累计计算。
Me.FXJE = fxje_tem1
fxje_tem1 = 0 '一旦利息计算完毕,将其清零,以便再次计算。
End If
Loop
End Sub

 

 

Top
cspa 发表于:2013-07-09 20:13:13


1,将Do Until rst.EOF改为Do Until rst.EOF=true

2,在Do Until rst.EOF语句前加上rst.movefirst



cspa 发表于:2013-07-10 08:55:17
不是没有有效判断记录尾,假设rst.MoveNext已经到达文尾了,但其后没有紧跟loop语句,而是DoCmd.GoToRecord , , acNext,自然窗体记录又向前一位,增加一条新记录,而此记录日期值为空自然报错。改了一下,你试试。点击下载此附件

晓学生 发表于:2013-07-10 09:46:57
多谢“cspa”,解决问题思路很重要啊。

总记录:3篇  页次:1/1 9 1 :