上面的代吗并没有移动两遍,其运行的轨迹是,先跳到最后一条记录,读取最后一条记录的记录号,存入INT1中.然后跳到第一行,从第一行开始进行移动.所以,你会感觉走了两边.其实并没有.
下面这段代码是直接去第一条记录,并开始移动,看看是不是你要的效果.
Private Sub 计算费用_DblClick(Cancel As Integer)
'获得记录数
Dim n As Integer
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("qry出口海运费计算")
rs.MoveLast
rs.MoveFirst
n = rs.RecordCount
Set rs = Nothing
'使光标在所有的计算费用字段中遍历一遍
Dim k As Integer
DoCmd.GoToRecord , , acFirst
For k = 1 To n - 1
'先将EDI费清零
Me.EDI费 = 0
'计算电放费
If Me.出口国家 = "MMX" Then
Me.EDI费 = Me.大柜 * 30 + Me.小柜 * 30
End If
'计算拼箱操作费
Me.华东拼箱费 = 0
If Me.拼箱托盘数 > 0 Then
Me.华东拼箱费 = Me.大柜拼 * 250 + Me.小柜拼 * 250 + Me.MCC拼入托盘数 * 2 * 30 + Me.MKC拼出托盘数 * 2 * 30
End If
'先将联单费清零
Me.联单费 = 0
'计算联单费
If Me.报关单张数 >= 2 Then
Me.联单费 = (Me.报关单张数 - 1) * 50
End If
'填入计算费用时间和费用计算人
Me.计算费用时间 = Now()
Me.计算费用者 = CurrentUser
DoCmd.GoToRecord , , acNext
Next k
MsgBox "费用计算完毕!", vbInformation, "系统运行进度"
End Sub