Ms access MSAccess:将一个值写入多个记录

Ms access MSAccess:将一个值写入多个记录,ms-access,vba,ms-access-2016,Ms Access,Vba,Ms Access 2016,我有一张有多张记录的表格。记录来自一个查询,查询的条件反过来来自表单。到目前为止,一切顺利。很好用 现在,我在标题中有一个文本框(tbx_Uebergabe_Std),希望在单击命令按钮(cbt_Ubergabe)时,将其值写入所有显示记录的特定字段(Uebergabe_SS)。我所尝试的: Private Sub-cbt\u Ubergabe\u Click() Me.Uebergabe_SS.Value=Me.tbx_Uebergabe_标准值 末端接头 这只会更改最顶端记录的值。这里的问题

我有一张有多张记录的表格。记录来自一个查询,查询的条件反过来来自表单。到目前为止,一切顺利。很好用

现在,我在标题中有一个文本框(tbx_Uebergabe_Std),希望在单击命令按钮(cbt_Ubergabe)时,将其值写入所有显示记录的特定字段(Uebergabe_SS)。我所尝试的:

Private Sub-cbt\u Ubergabe\u Click()
Me.Uebergabe_SS.Value=Me.tbx_Uebergabe_标准值
末端接头

这只会更改最顶端记录的值。这里的问题可能是,用于显示记录值的文本字段的名称与字段本身的名称相同

所以我想我可以通过以下方式直接从查询(qry_剂量)写入记录:

Public Sub-cbt\u Ubergabe\u Click()
qry_剂量.Uebergabe_SS.Value=Me.tbx_Uebergabe_标准值
末端接头

但这只会导致运行时错误(424,如果您想知道的话)


我做错了什么以及如何修复此问题?

您可以使用forms
.RecordsetClone
属性迭代所有项目:

Public Sub cbt_Ubergabe_Click()
    With Me.RecordsetClone
        .MoveFirst
        Do While Not .EOF
            .Edit
            !Uebergabe_SS.Value = Me.tbx_Uebergabe_Std.Value
            .Update
            .MoveNext
        Loop
    End With
End Sub

请注意,这可能会导致锁定冲突。您可以尝试使用
.Recordset
来避免它们,但随后您将可以看到表单上的所有项目。

您可以使用表单
.RecordsetClone
属性来迭代所有项目:

Public Sub cbt_Ubergabe_Click()
    With Me.RecordsetClone
        .MoveFirst
        Do While Not .EOF
            .Edit
            !Uebergabe_SS.Value = Me.tbx_Uebergabe_Std.Value
            .Update
            .MoveNext
        Loop
    End With
End Sub

请注意,这可能会导致锁定冲突。您可以尝试使用
.Recordset
来避免它们,但这样您就可以明显地浏览表单上的所有项目。

我不知道您所说的“锁定冲突”是什么意思。但这很好用。谢谢你,埃里克!如果您正在编辑表单上的项目,此代码也将尝试编辑该项目。这是一个冲突,因为一行不能同时以两种方式编辑,这可能会导致错误。如果没有(这取决于forms RecordLocks属性等),那也没关系。我不知道“锁定冲突”是什么意思。但这很好用。谢谢你,埃里克!如果您正在编辑表单上的项目,此代码也将尝试编辑该项目。这是一个冲突,因为一行不能同时以两种方式编辑,这可能会导致错误。如果没有(这取决于forms RecordLocks属性以及其他内容),那就没问题了。