我想在我的表单中放一个按钮,通过单击按钮更改其视图。 我试着加入这个子程序:
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.
我该如何解决这个问题?
答案 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