如何在microsoft访问中动态加载,访问和卸载子表单

时间:2012-08-08 22:44:07

标签: vba ms-access vbscript ms-office office-2010

我正在尝试从ASP.NET到访问编程的顶级过渡,当我想到Access中的子表单时,我习惯于考虑Usercontrols。我想要做的是允许用户单击一个按钮来加载包含控件的子表单,用户可以输入其他数据。我将不胜感激任何有助于我理解如何在MS Access中完成此操作的信息或资源 - 如何加载,卸载和访问子表单中的数据。提前致谢

1 个答案:

答案 0 :(得分:2)

嗯,作为一般规则,这种子表格的加载是自动完成的,不需要您进行任何编码。因此,一般来说,最好不要担心这个问题,并节省所有编码时间,以帮助您附近的穷人和有需要的人。

但是,我应该指出,如果您在Access中构建Web表单,则子表单仅在使用时才会动态加载。因此,如果您将子表单放在选项卡控件后面,那么生成的Web表单(它们在发布时是XAML表单,表单代码转换为JavaScript),然后子表单将动态加载到浏览器中。毫无疑问,这种设置确实可以使Web表单加载速度更快。因此,对于Web表单,此类加载是动态的,并且可以按需访问Web表单。

但是,我猜这里是你在谈论Access客户端表单而不是Access Web表单。鉴于这种情况,在客户端,加载时间相当快,很少担心或需要或浪费开发人员时间这样做。

然而,在某些情况下,例如必须加载5个子表单,并且这样的时间可以开始累加到用户可能开始注意到延迟的程度。在这种情况下,您可以动态加载子表单,并通过设置子表单对象的源对象属性来执行此操作。

所以请记住,子表单只是一个“控件”,并不依赖于实际表单。在大多数Access应用程序中,我看到这个子表单控件的名称与子表单的名称相同,但它肯定不一定。

因此,要动态加载子表单,例如更改为表单上的其他选项卡时,代码如下所示:

  Private Sub TabCtl2_Change()

     If Me.TabCtl2.Value = 1 Then
        If Me.frmListContacts.SourceObject = "" Then
           Me.frmListContacts.SourceObject = "frmListContacts"
        End If

  End Sub

因此,如果在表单上放置子表单控件,但将源对象设置保留为空,则不会加载任何表单或显示该子表单。在上面,一旦我加载了表单,那么源对象设置将不会为空,因此我不会尝试多次设置/加载子表单。

如上所述,在加载表单的绝大多数情况下,无论如何都需要加载和显示该子表单,因此在大多数典型应用程序中,不需要上述代码。