我正在尝试从 ASP.NET 到访问编程的顶级转换,当我想到 Access 中的子窗体时,我习惯于从用户控件的角度来思考。我想做的是允许用户单击一个按钮来加载一个包含用户可以输入其他数据的控件的子表单。如果有任何信息或资源可以帮助我理解在 MS Access 中是如何完成的——如何加载、卸载和访问子表单中的数据,我将不胜感激。提前致谢
1 回答
好吧,作为一般规则,子表单的这种加载是自动完成的,不需要您进行任何编码。所以一般来说,你最好不要担心这个问题,并节省所有编码时间来帮助你附近的穷人和有需要的人。
但是我应该指出,如果您在 Access 中构建 Web 表单,则子表单仅在使用时才会动态加载。因此,如果您在选项卡控件后面放置一个子表单,然后生成的 Web 表单(发布时它们是 XAML 表单,并且表单代码被转换为 JavaScript),那么子表单会为您动态加载到浏览器中。毫无疑问,这种设置确实会加快 Web 表单的加载速度。因此,对于 Web 表单,这种加载是动态的,并且是 Access 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
因此,如果您在表单上放置子表单控件,但将源对象设置留空,则不会为该子表单加载或显示任何表单。在上面,一旦我加载了表单,那么源对象设置就不会是空白的,因此我不会多次尝试设置/加载子表单。
如前所述,在加载表单的绝大多数情况下,无论如何您都需要加载和显示该子表单,因此在大多数典型应用程序中不需要上述代码。