在VBA Access中动态填充其他子表单的SubForm

时间:2017-11-03 19:44:38

标签: vba ms-access access-vba

我想创建一个包含动态创建的子表单列表的弹出窗体。子表单的数量由用户在父表单中确定。

这是一个草图来说明我想要做的事情。用户可以将“Num Branches”的值更改为2到10.此数字又反映在下面的可滚动框中创建的子表单的数量中。子表单都是相同的,我用红色表示它们。 enter image description here 我有几个关于如何做到这一点的问题

  • 可以有一个子表格的倍数吗?
  • 如果以上问题为否,我必须动态创建每个控件,是否需要关注此答案中提到的754动态创建的控件限制https://stackoverflow.com/a/31301469/7254514
  • 有人能给我一个循环示例,演示如何在可滚动框内动态创建这些子表单吗?我想在每个for循环期间唯一会改变的属性是“top”属性。

1 个答案:

答案 0 :(得分:2)

您可能不希望动态创建子窗体控件(因为创建控件=切换到设计视图,需要对数据库进行独占锁定等)。

您不能使用具有子窗体的多个实例的连续窗体,因为Access不允许连续窗体上的子窗体控件。

我的方法是在窗体上放置10个(最大)子窗体控件,将它们全部隐藏,并动态地将它们分配给特定的源对象。

伪代码:

Dim numBranches As Long
Dim i As Long

For i = 1 to numBranches
   Me.Controls("subform" & i).Visible = True
   Me.Controls("subform" & i).Form.Filter = "branch = " & i 'Appropriate filter here
   Me.Controls("subform" & i).Form.FilterOn = True
Next i