【问题标题】:How can I change the view of an MS Access subform at runtime in VBA code?如何在 VBA 代码中在运行时更改 MS Access 子窗体的视图?
【发布时间】:2018-07-05 20:32:05
【问题描述】:

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

我找到了一个 defaultview 属性,但是在它已经打开后,它看起来不会切换表单的视图。

基本上我需要的属性我可以填写以下代码..

sfEmployeeBatchEntry.Form.??? = acFormDS

【问题讨论】:

  • 如何使其进入连续表单视图
  • 我建议您在网站上单独提问,而不是在评论中提问。

标签: ms-access vba


【解决方案1】:

我自己找到的。我错过了它,因为它使用了愚蠢而笨拙的 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

【讨论】:

  • 如何使其进入连续表单视图
  • 在我的测试中,如果在设计视图中将默认视图属性设置为“连续表单”,则仅使用DoCmd.RunCommand acCmdSubformFormView 显示连续表单。如果默认视图设置为其他任何内容,则它只会在数据表和单一表单视图之间切换。我没有做进一步的测试/研究是否可以在运行时更改 DefaultView
【解决方案2】:

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

 Dim intView As Integer
 intView = Me.Form.CurrentView

 If intView = 1 Then

    DoCmd.RunCommand (acCmdSubformDatasheetView)
    Else


    DoCmd.RunCommand (acCmdSubformFormView)
    End If

Exit Sub

【讨论】:

    【解决方案3】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2017-08-17
      • 2015-06-24
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多