访问VBA以更新表记录

访问VBA以更新表记录,vba,ms-access,button,Vba,Ms Access,Button,我试图将代码分配给MS Access中的一个按钮,该按钮将更新表记录。单击按钮时,我希望它引用附近列表框List26中用户更新的项目编号,在表资产中查找匹配的项目编号字段,并将该记录上的字段所有者更改为空 我一直在深入研究,发现DAO记录集有一些逻辑,但我对VBA不够熟悉,无法正确设置它,也不知道这是否是正确的路径。以下是我到目前为止的收获: Private Sub Check_In_Device_Click() Dim rec As DAO.Recordset 'Table1 cal

我试图将代码分配给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
OpenRecordset获取表/查询名称和类型,您需要以dbOpenDynaset的形式打开才能使用.findfirst

确保使用绑定列属性将listbox设置为返回正确的值。默认值可能是记录的唯一键

像这样的东西应该可以做到:

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
OpenRecordset获取表/查询名称和类型,您需要以dbOpenDynaset的形式打开才能使用.findfirst

确保使用绑定列属性将listbox设置为返回正确的值。默认值可能是记录的唯一键

像这样的东西应该可以做到:

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
项可能是数字,请使用Null清空字段,因此请尝试:

专用子签入设备\u单击 作为DAO.Recordset的Dim rec “表1称为资产 Set rec=CurrentDb.OpenRecordsetSELECT*FROM Assets 如果rec.RecordCount>0,则 '如果列表26中的数据与资产表中的项目匹配。。。 记录移动优先 rec.FindFirst Item='&我!清单26.价值&' 如果不是rec.NoMatch,则 '已找到项目。 记录编辑 '将所有者字段更改为空 记录!Owner.Value=Null 记录更新 如果结束 如果结束 记录结束 端接头 项可能是数字,请使用Null清空字段,因此请尝试:

专用子签入设备\u单击 作为DAO.Recordset的Dim rec “表1称为资产 Set rec=CurrentDb.OpenRecordsetSELECT*FROM Assets 如果rec.RecordCount>0,则 '如果列表26中的数据与资产表中的项目匹配。。。 记录移动优先 rec.FindFirst Item='&我!清单26.价值&' 如果不是rec.NoMatch,则 '已找到项目。 记录编辑 '将所有者字段更改为空 记录!Owner.Value=Null 记录更新 如果结束 如果结束 记录结束 端接头
非常感谢。这将它清理了很多,并且在调试时给了我更好的响应。最终还是得到了一个针对的数据对话错误![Owner]字段,但切换为NULL,现在就可以开始了。谢谢!这将它清理了很多,并且在调试时给了我更好的响应。最终还是得到了一个针对的数据对话错误![Owner]字段,但切换为NULL,现在就可以开始了。谢谢!Item字段设置为text still,但使用NULL使其通过。确定,更改了该设置。那么答案是?谢谢!Item字段设置为text still,但使用NULL使其通过。确定,更改了该设置。那么答案是?