Private Sub 数量_AfterUpdate()
Dim cnn: Set cnn = CurrentProject.Connection
Dim strSQL As String
strSQL = "SELECT * FROM [TMP_Tbl_库存表] WHERE [进厂编号]=" & SQLText(Me![进厂编号])
Dim rst 'As Recordset
Set rst = ADO.OpenRecordset(strSQL, adLockOptimistic, cnn)
rst![库存数量] = rst![库存数量] - Me![数量]
End Sub
Set rst = CurrentDb.OpenRecordset(strSQL, adLockOptimistic, cnn)
rst.Edit
rst![库存数量] = rst![库存数量] - Me![数量]
rst.Update
复制代码
最后说一句,使用ADO或者DAO的记录集(recordset)时,最好加上父级集合。例如:
Dim rst As DAO.Recordset
这个问题,似乎每隔一段时间就会出现到在论坛上。
Dim rst 'As Recordset
看你注释掉后面的定义类型,相信你也遇到了错误。为什么?你知道了么?ADODB.Recordset是记录集,DAO.Recordset也是记录集。系统怎么知道你想用的是哪个记录集?
在无法判断的情况下(也就是这样定义时:Dim rst As Recordset),系统会根据优先级进行选择。如图所示:默认情况下DAO是优先于ADO的,所以,Dim rst As Recordset=Dim rst As DAO.Recordset。但低版本(例如DAO 3.6)或者人为不小心调整了顺序,则会出现错误。