How to Create an Access Form and Subform for a Many-to-Many Relationship
Question details
The user needs to display related records, such as a person's events, in a Microsoft Access subform when the entities share a many-to-many relationship.
- Product
- Microsoft Access
- Device & OS
- not provided
- Scenario
- Designing a database user interface where users need to view, enter, and manage many-to-many relationships through a main form and a subform.
- Observed behavior
- The user wants to successfully bind a subform so it accurately reflects related records for a specific parent record.
Ensure you have already created the two primary data tables (e.g., People and Events) and clearly defined their primary keys before designing the forms.
Use a Junction Table to Bind the Subform
To resolve a many-to-many relationship in Microsoft Access, you must use an intermediate junction table that connects the two primary tables. The subform is then bound directly to this junction table.
Relational databases cannot handle direct many-to-many relationships in standard forms. You must break the relationship down into two one-to-many relationships via a junction table to accurately display and enter records.
Create a new table (e.g., 'PersonEvents') that includes the primary keys from both the 'People' table and the 'Events' table as foreign keys.
Open the main form, which should be bound to your primary table (like the 'People' table), in Design View.
Insert a subform control into the main form. Set the record source of this subform to the newly created junction table.
In the subform's Property Sheet under the Data tab, set the 'Link Master Fields' and 'Link Child Fields' using the person's primary key field. This ensures the subform dynamically displays only the events related to the currently viewed person.
Manage Your Relational Data Smoothly with WPS Office
While Microsoft Access is used for complex relational databases, many users find that organizing lists, tracking events, and managing contacts is much easier and faster in a powerful spreadsheet. WPS Office is a free, lightweight, and highly compatible alternative to Microsoft Office that lets you manage complex data effortlessly.
- 1. Download WPS Office: Visit the official WPS website to download and install the free office suite.
- 2. Open WPS Spreadsheet: Launch the application and open a new blank workbook to start organizing your data.
- 3. Manage Relational Data: Use separate worksheets for your entities and connect them using advanced formulas like XLOOKUP or PivotTables.

Frequently Asked Questions
What is a junction table in Microsoft Access?
A junction table (also known as a linking table) is a database table used to resolve a many-to-many relationship between two other tables. It stores the primary keys of both tables, allowing them to be linked together structurally.
Why can't I directly link a many-to-many relationship in a form?
Relational databases require a structured hierarchy to link records accurately. Without a junction table breaking the many-to-many relationship into two one-to-many relationships, the database engine cannot determine which specific records belong to one another in a form layout.
How do I set the parent-child link in an Access subform?
In Design View, select the subform control and open the Property Sheet. Under the Data tab, locate the 'Link Master Fields' and 'Link Child Fields' properties, then enter the common ID field that connects the main form's data source to the subform's junction table.




