如何在运行时将Microsoft Access窗体视图从单个窗体更改为连续窗体?

时间:2016-07-14 19:26:14

标签: forms vba ms-access

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

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.

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

第一个问题是您无法在数据表视图中显示按钮,因此您可能必须使用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

答案 1 :(得分: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

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

答案 2 :(得分:-1)

要更改子窗体的视图以从主窗体在连续视图和数据表视图之间切换,请创建一个名为“ 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