
Лабораторный практикум в Access / Лабораторный практикум в Access / Создание связанных форм в Access
.docMain Form
Sub Form_Current()
On Error GoTo Form_Current_Err
If ChildFormIsOpen() Then FilterChildForm
Form_Current_Exit:
Exit Sub
Form_Current_Err:
MsgBox Error$
Resume Form_Current_Exit
End Sub
Sub ToggleLink_Click()
On Error GoTo ToggleLink_Click_Err
If ChildFormIsOpen() Then
CloseChildForm
Else
OpenChildForm
FilterChildForm
End If
ToggleLink_Click_Exit:
Exit Sub
ToggleLink_Click_Err:
MsgBox Error$
Resume ToggleLink_Click_Exit
End Sub
Private Sub FilterChildForm()
If Me.NewRecord Then
Forms![Child Form].DataEntry = True
Else
Forms![Child Form].Filter = "[Field1] = " & Me.[Control1]
Forms![ Child Form].FilterOn = True
End If
End Sub
Private Sub OpenChildForm()
DoCmd.OpenForm "Child Form"
If Not Me.[ToggleLink] Then Me![ToggleLink] = True
End Sub
Private Sub CloseChildForm()
DoCmd.Close acForm, "Child Form"
If Me![ToggleLink] Then Me![ToggleLink] = False
End Sub
Private Function ChildFormIsOpen()
ChildFormIsOpen = (SysCmd(acSysCmdGetObjectState, acForm, "Child Form") And acObjStateOpen) <> False
End Function
Private Sub OpenChildFormButton_Click()
On Error GoTo Err_OpenChildFormButton_Click
Screen.PreviousControl.SetFocus
DoCmd.FindNext
Exit_OpenChildFormButton_Click:
Exit Sub
Err_OpenChildFormButton_Click:
MsgBox Err.Description
Resume Exit_OpenChildFormButton_Click
End Sub
Child form
Sub Form_Load()
On Error GoTo Form_Load_Err
If ParentFormIsOpen() Then Forms![Main Form]!ToggleLink = True
Form_Load_Exit:
Exit Sub
Form_Load_Err:
MsgBox Error$
Resume Form_Load_Exit
End Sub
Sub Form_Unload(Cancel As Integer)
On Error GoTo Form_Unload_Err
If ParentFormIsOpen() Then Forms![Main Form]!ToggleLink = False
Form_Unload_Exit:
Exit Sub
Form_Unload_Err:
MsgBox Error$
Resume Form_Unload_Exit
End Sub
Private Function ParentFormIsOpen()
ParentFormIsOpen = (SysCmd(acSysCmdGetObjectState, acForm, "Main Form") And acObjStateOpen) <> False
End Function