【发布时间】:2016-10-30 00:24:30
【问题描述】:
我的主窗体上有一个按钮,它将连续子窗体中的所有控件标记为“是”,但它只更改连续窗体中的第一条记录。第二、第三等记录不会改变。我找到了一个answer using DAO recordsets,但我使用的组合框是未绑定的。
这是我的代码。它会修改子表单中第一条记录中的所有组合框。
For Each ctl In Me![SubformName].Controls
If ctl.ControlType = acComboBox Then
If ctl.Name <> "Yes" Then
ctl.Value = "Yes"
End If
End If
Next ctl
我应该在我的代码中进行哪些更改以允许我修改第一个之后的记录?有没有办法直接引用连续的表单记录?
编辑添加:
我仍然无法让它适用于未绑定的组合框,但以下内容适用于绑定的组合框。
Set rst = Me.SubformName.Form.RecordsetClone
rst.MoveFirst
Do While rst.EOF = False
rst.Edit
rst!FieldName = "Yes"
rst.Update
rst.MoveNext
Loop
【问题讨论】:
-
您确定组合框未绑定,即没有 ControlSource?因为连续形式的未绑定输入控件实际上没有意义。然后您的代码实际上应该将它们全部更改(因为该控件实际上只有一个实例)。
-
@Andre 我正在使用未绑定的组合框来更改绑定组合框中的值。
-
我可以在未绑定的组合框中使用 VBA 遍历所有组合框。我还没有找到一种方法来使用适用于我的表单的 DAO 数据集。
-
对不起,我还是不明白。也许带有一些注释的屏幕截图会有所帮助。您可以使用
Subform.RecordsetClone循环记录。 -
@Andre 谢谢,另一位评论者也提到了 RecordsetClone。我正在努力让它发挥作用。
标签: ms-access combobox vba ms-access-2013