I had the same issue. Tabcontols are a good solution. If you don't like Tabcontrols(I had too many other forms to use tabs. You don't) here is another solution. Assuming that each of your 5 forms are bound to tables which are linked to your main table this code will open whichever one of the 5 forms you select in the listbox and populate the FK field with the same value as the PK in your main form thus correctly linking the records.
Create a listbox on your main form listing each of your 5 forms. Attach the following code to the after update event:
----------------------
Private Sub Mycbo_AfterUpdate()
Select Case Me.Mycbo
Case "New Form 1"
Dim strFrm As String
strFrm = "frm_mynewform1"
'save pending edits
Me.Refresh
'open the "new" form
DoCmd.OpenForm strFrm
'create the new record in the newly opened form
DoCmd.GoToRecord acDataForm, strFrm, acNewRec
'reference the newly opened form inside the With block
With Forms(strFrm)
'and set the values of any of its controls
.ForeignKeyField = me.PrimaryKey
End With
Case "New Form 2"
Dim strFrm As String
strFrm = "frm_mynewform2"
'save pending edits
Me.Refresh
'open the "new" form
DoCmd.OpenForm strFrm
'create the new record in the newly opened form
DoCmd.GoToRecord acDataForm, strFrm, acNewRec
'reference the newly opened form inside the With block
With Forms(strFrm)
'and set the values of any of its controls
.ForeignKeyField = me.PrimaryKey
End With
Case "New Form 3"
Dim strFrm As String
strFrm = "frm_mynewform3"
'save pending edits
Me.Refresh
'open the "new" form
DoCmd.OpenForm strFrm
'create the new record in the newly opened form
DoCmd.GoToRecord acDataForm, strFrm, acNewRec
'reference the newly opened form inside the With block
With Forms(strFrm)
'and set the values of any of its controls
.ForeignKeyField = me.PrimaryKey
End With
Case "New Form 4"
Dim strFrm As String
strFrm = "frm_mynewform4"
'save pending edits
Me.Refresh
'open the "new" form
DoCmd.OpenForm strFrm
'create the new record in the newly opened form
DoCmd.GoToRecord acDataForm, strFrm, acNewRec
'reference the newly opened form inside the With block
With Forms(strFrm)
'and set the values of any of its controls
.ForeignKeyField = me.PrimaryKey
End With
Case "New Form 5"
Dim strFrm As String
strFrm = "frm_mynewform5"
'save pending edits
Me.Refresh
'open the "new" form
DoCmd.OpenForm strFrm
'create the new record in the newly opened form
DoCmd.GoToRecord acDataForm, strFrm, acNewRec
'reference the newly opened form inside the With block
With Forms(strFrm)
'and set the values of any of its controls
.ForeignKeyField = me.PrimaryKey
End With
End Select
End Sub
---------------