安纳普尔那:ACCESS数据库编程

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 10:13:28
请教大家,本人编写了一段代码如下:

Option Compare Database
Option Explicit

Public Sub 自动填补销售单位成本()

Dim db As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim a As Variant
Dim b As Variant
Dim c As Variant
Dim d As Variant
Dim e As Variant
Dim f As Variant
Dim g As Variant
Dim j As Variant

Set db = CurrentProject.Connection
rs.Open "进销存明细", db, adOpenDynamic, adLockOptimistic

a = InputBox("请输入年月份如2006.07", "请输入年月份")

If rs("销售数量") > 0 And rs("销售单位成本") = 0 And rs("月份") < a Or rs("月份") = a Then
b = rs("商品名称")
Else
rs.MoveNext
End If

rs.MoveFirst
c = 0
Do Until rs.EOF
If rs("商品名称") = b And rs("月份") < a Or rs("月份") = a Then
c = c + rs("进货数量")
rs.MoveNext
Else
rs.MoveNext
End If
Loop

rs.MoveFirst '问题为:无法回到表的第一条记录

rs("销售单位成本") = 10000+c
rs.Update

End Sub

我只是想知道为什么执行rs.movefirst后不是表的第一条记录的“销售单位成本"字段更新为10000
而是其它记录更新,也就是说执行rs.movefirst以后回不到表的第一条记录。

还是用查找满足条件的方式来确认第一条记录我做得程序中3个用到DAO,一个会出现这个问题,也不知道了,