0

我对访问非常陌生。我正在尝试使用 OpenRecordSet 更新表并且遇到问题。这是我的代码:

Set rst2 = CurrentDb.OpenRecordset("tbl_Inventory", dbOpenTable)
With rst2
.Edit
If !InventoryID = Me.InventoryID Then

!Stock = Me.Quantity
.Update
.Close
End If
End With
Set rst2 = Nothing

当在库存表单页面上单击更新按钮时调用此方法。表格上的每一行都有一个更新按钮和一个输入框“数量”。这是我的问题:

1)当我单击更新按钮时,所有数量输入框(每个项目)都更改为该新数字。如何仅指定该行?

2) 当我单击第一行 ID=1 上的更新时,回头查看库存表单,我看到 Stock 列已进行了更改。但是当我单击其他行时,没有任何变化。我有一种感觉,这些源于一个强调问题。

4

2 回答 2

1

您的代码中没有 rs.MoveNext 行。试试这个:

Set rst2 = CurrentDb.OpenRecordset("tbl_Inventory", dbOpenTable)

Do While rst2.eof = false

With rst2
If !InventoryID = Me.InventoryID Then
   .Edit
   !Stock = Me.Quantity
   .Update
End If

End With

rst2.MoveNext

Loop
rst2.close
Set rst2 = Nothing
于 2013-06-18T20:36:16.827 回答
0

您如何选择要更改的单个记录?您是否尝试过使用 .FindFirst?

所以With放之后:

.FindFirst ("[InventoryID] = '" & Me.InventoryID & "'")

这将确保您只使用那一条记录。

于 2013-06-18T20:28:22.693 回答