【问题标题】:Edit all controls in an Access 2013 continuous form编辑 Access 2013 连续表单中的所有控件
【发布时间】: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


【解决方案1】:

打开子窗体控件的RecordsetClone

循环遍历,为每条记录将绑定到组合框的字段的值设置为True。

【讨论】:

  • 如何获取当前有焦点的子表单记录的索引?我可以使用 RecordsetClone 遍历子表单,但我在问题中编写的代码仍然只针对第一条记录运行。不确定它是否真的循环正常。
  • 我的代码是Set rst = Me.SubformName.Form.RecordsetClone Do While rst.EOF = False,然后是问题中的代码,最后是rst.MoveNext Loop
  • 你的循环是正确的。但请再次阅读:不要使用控件。设置您要调整的字段的值。
  • 无论我使用循环还是Combo10.Value = "Yes",它都会循环正确的次数,但只会一遍又一遍地循环第一条记录。我是否必须改用rst.Combo10.Value 之类的东西?
  • 请忘记连击。请设置字段值:rst!SomeField.Value = False.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
相关资源
最近更新 更多