如何解决访问VBA以更新表记录
我试图将代码分配给MS Access中的一个按钮,该按钮将更新表记录。单击该按钮后,我希望它在附近的列表框中引用用户更新的商品编号(List26),在表中查找与该商品编号匹配的字段(资产),并在该字段上更改字段(所有者)记录为空。
我一直在研究,发现有关DAO记录集的一些逻辑,但是我对VBA不够熟悉,无法正确设置它或知道这是否是正确的路径。以下是我到目前为止所要做的:
Private Sub Check_In_Device_Click()
Dim rec As DAO.Recordset
'Table1 called "Assets"
Set rec = CurrentDb.OpenRecordset("SELECT * FROM Assets")
'if the data in List26 matches an Item# in Asset table...
If [Item].value = [List26].value Then
rec.MoveFirst
rec.Edit
'change Owner field to null
rec![Owner].value = ""
rec.Update
rec.Close
End If
End Sub
解决方法
Item 可能是数字,并使用 Null 来空白字段,因此请尝试:
Private Sub Check_In_Device_Click()
Dim rec As DAO.Recordset
' Table1 called "Assets"
Set rec = CurrentDb.OpenRecordset("SELECT * FROM Assets")
If rec.RecordCount > 0 Then
' If the data in List26 matches an Item# in Asset table...
rec.MoveFirst
rec.FindFirst "Item = '" & Me!List26.Value & "'"
If Not rec.NoMatch Then
' Item found.
rec.Edit
' Change Owner field to null
rec!Owner.Value = Null
rec.Update
End If
End If
rec.Close
End Sub
,
OpenRecordset
带有表/查询名称和类型,您需要以dbOpenDynaset的形式打开才能使用.findfirst
确保使用Bound Column
属性将列表框设置为返回正确的值(默认值可能是记录的唯一键)。
应该执行以下操作:
Private Sub Check_In_Device_Click()
Dim rec As DAO.Recordset
Set rec = CurrentDb.OpenRecordset("Assets",dbOpenDynaset)
With rec
.FindFirst "[Item] Like '" & List26.Value & "'"
.Edit
![Owner] = ""
.Update
.Close
End With
End Sub
如果要遍历整个记录集,可以使用:
Dim rec As DAO.Recordset
Set rec = CurrentDb.OpenRecordset("Assets",dbOpenDynaset)
With rec
.MoveFirst
Do Until .EOF
If ![Item] Like List26.Value Then
.Edit
![Owner].value = Null
.Update
End If
.MoveNext
Loop
.Close
End With
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。