【问题标题】:How can I change a Microsoft Access form view from Single Form to Continous Forms at Runtime?如何在运行时将 Microsoft Access 表单视图从单一表单更改为连续表单?
【发布时间】:2016-11-17 20:51:02
【问题描述】:

我想在我的表单中放置一个按钮,通过单击按钮更改其视图。 我试着加入这个子程序:

Pricate Sub SwitchView_Click()
    Me.DefaultView = 1
End Sub

但是在运行它时,我遇到了一个错误,上面写着

Run-time error '2136': To set this property, open the form or report in Design View.

我该如何解决这个问题?

【问题讨论】:

    标签: forms vba ms-access


    【解决方案1】:

    第一个问题是您无法在数据表视图上显示按钮,因此您可能必须使用 Dbl_Click 事件。

    无论如何,都是这样的:

    Private Sub SwitchView_Click()
    
    Select Case Me.CurrentView
         Case 1
              'Currently in form view
               DoCmd.RunCommand acCmdDesignView
         Case 2
              'Currently in datasheet view
               DoCmd.RunCommand acCmdFormView
         Case Else
              'Must be design view (0) or some as yet undefined view
              'So do nothing.
    End Select
    

    【讨论】:

    • 表单从未出现在数据表视图中。我在问如何从单一形式(可以显示一个按钮)到连续形式。
    • 另外我的表单不是子表单。我尝试运行你的代码,它给了我这个错误“运行时错误'2046':命令或操作'SubFormDatasheet'现在不可用。”
    【解决方案2】:

    错误信息很明确:这是一个只能在设计视图中设置的属性。

    所以你必须切换视图、设置属性、切换回来。
    我会将其放入标准模块中,而不是放入表单模块中。

    Private Sub SwitchView_Click()
        Call SwitchDefaultView(Me)
    End Sub
    
    ' in standard module
    Public Sub SwitchDefaultView(frm As Form)
    
        Dim sFrm As String
    
        ' Make sure the current record is (and can be) saved
        On Error Resume Next
        frm.Dirty = False
        If Err.Number <> 0 Then MsgBox Err.Description: Exit Sub
    
        On Error GoTo 0
        sFrm = frm.Name
        ' Switch to Design view
        DoCmd.OpenForm sFrm, acDesign
        Forms(sFrm).DefaultView = 1     ' Continuous form
        ' DoCmd.Save acForm, sFrm         ' optional
        ' Switch back to Form view
        DoCmd.OpenForm sFrm, acNormal
    
    End Sub
    

    虽然我想知道:通常一个表格是为连续表格或单一表格设计的。我很难想象这个开关的用例。

    【讨论】:

    • 我终于发现没有办法直接将视图从单一形式更改为连续形式。但是您提供了一个绝妙的解决方法。
    【解决方案3】:

    要更改子窗体的视图以从主窗体在连续视图和数据表视图之间切换,请使用以下 On Click 事件创建一个名为“cmdToggleView”的按钮:

    (用您自己的子表单名称替换子表单名称)

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      相关资源
      最近更新 更多