There are tons of solutions. Depends on what you want to do. Keep in mind, the more 'user friendly' the more code.
For a start, to open Contract form to a new record row and populate the StaffID foreign key, consider the following.
Rename the subform container control to ctrContracts.
Code for the buttons:
Code:
Private Sub Command35_Click()
If Me.Dirty Then Me.Dirty = False
DoCmd.OpenForm "Contract Information Subform", , , , acFormAdd, acDialog, Me.StaffID
Me.ctrContracts.Requery
End Sub
Private Sub Command57_Click()
CurrentDb.Execute "DELETE FROM [Contract Information] WHERE ContractID = " & Me.ctrContracts!ContractID
Me.ctrContracts.Requery
End Sub
Code behind subform:
Code:
Private Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then
Me.Cycle = 1
Me!StaffID = Me.OpenArgs
End If
End Sub
If you don't want users to edit in a form, then set the form properties AllowAdditions and AllowDeletions and AllowEdits to No. If you don't want a form then use a listbox and modify code.