繁体   English   中英

如何在运行时使用VBA代码更改MS Access子窗体的视图?

[英]How can I change the view of an MS Access subform at runtime in VBA code?

这似乎是一件简单的事情,并且我确定我之前已经做过,但是自从我在Access中完成任何UI编程以来已经有一段时间了。 我需要做的是在表单上放置一个按钮,以在子表单的数据表和表单视图之间切换。

我已经找到了defaultview属性,但是看起来像没有什么会在窗体打开后切换窗体的视图。

本质上,我需要可以在以下代码中填写的属性。

sfEmployeeBatchEntry.Form.??? = acFormDS

我自己找到的。 我之所以错过了它,是因为它使用了笨拙的RunCommand语法,而不是控件或表单类上的简单属性或方法。

这不是很漂亮,但是对于后代来说,这就是答案。

'You have to set focus to the subform control or the change view call will'
'fail (UGH!)'
MyForm.mySubFormControl.SetFocus

'Change to datasheet view...'
DoCmd.RunCommand acCmdSubformDatasheet

'Change to Form View...'
DoCmd.RunCommand acCmdSubformFormView

我尝试了在不同站点上找到的许多不同解决方案。 有些似乎不必要地复杂。 我清理了一些杂物,发现这最适合我的需求。

 Dim intView As Integer
 intView = Me.Form.CurrentView

 If intView = 1 Then

    DoCmd.RunCommand (acCmdSubformDatasheetView)
    Else


    DoCmd.RunCommand (acCmdSubformFormView)
    End If

Exit Sub

若要在连续和数据表之间切换子窗体的视图,请使用以下代码:

Private Sub cmdToggleView_Click()

    If Me.frmViewDetailedTransactionsSub.Form.CurrentView = 1 Then
        Me.frmViewDetailedTransactionsSub.SetFocus
        DoCmd.RunCommand acCmdSubformDatasheetView
        Exit Sub
    End If

    If Me.frmViewDetailedTransactionsSub.Form.CurrentView = 2 Then
        Me.frmViewDetailedTransactionsSub.SetFocus
        DoCmd.RunCommand acCmdSubformFormView
        Exit Sub
    End If

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM