How to Display Multiple Employees for One Complaint in an Access Report
Question details
The user needs to associate and display multiple employees for a single complaint record in an Access report using a normalized database design.

- Product
- Microsoft Access
- Device & OS
- not provided
- Scenario
- Designing a relational database report to handle many-to-many relationships between complaints and employees.
- Observed behavior
- The goal is to cleanly display all related employee names on a complaint report without relying on multi-value fields.
Ensure your primary tables for Complaints and Employees are already set up, and back up your database before creating new junction tables or modifying relationships.
Use a Junction Table and VBA Concatenation
The most robust method to handle many-to-many relationships in Access is using a junction table combined with a VBA function to concatenate employee names on the final report.
Avoid using Access multi-value fields, as they can cause compatibility issues if you ever migrate your database to SQL Server. A junction table is the standard normalized approach for mapping multiple employees to a single complaint.
Create a new table named 'ComplaintEmployees'. Add two Number fields: 'ComplaintID' and 'EmployeeID'. Set both fields together as the primary key to prevent duplicate assignments.
Navigate to 'Database Tools' > 'Relationships'. Add your Complaints, Employees, and the new ComplaintEmployees tables. Enforce referential integrity by linking ComplaintID to the Complaints table and EmployeeID to the Employees table.
Create a Continuous Form based on the junction table. Add a Combo Box bound to 'EmployeeID'. In the Combo Box properties, set the Row Source to your Employees table, Column Count to 2, and Column Widths to '0";1"' so it displays the employee's name while storing their ID.
In your report query, use a custom VBA concatenation function (such as Allen Browne's ConcatRelated function) to group and merge the related employee names into a single text string per ComplaintID.

Group Report by Complaint with Separate Details
If you prefer not to use VBA coding, you can group your report by complaint and list each employee sequentially in the detail section.
Manage Your Office Tasks Seamlessly with WPS Office
While Microsoft Access is used for complex database management, WPS Office offers a free, lightweight, and easy-to-use alternative for handling your everyday documents, data analysis, and presentations without the steep learning curve.

Frequently Asked Questions
Why shouldn't I use multi-value fields in Access for multiple employees?
Multi-value fields can complicate querying, reporting, and migrating your database to other platforms like SQL Server. A normalized junction table is a standard, robust approach for handling many-to-many relationships.
How do I make a combo box show the employee's name but store their ID?
In the combo box Property Sheet, set the 'Column Count' to 2, and the 'Column Widths' to '0";1"'. Bind the 'Control Source' to the EmployeeID. This hides the ID column and displays the name column from your query.
Can I display multiple employee names in a single text box without VBA?
No, Access does not have a native function to concatenate multiple rows of text into a single string. You must either use a custom VBA function like ConcatRelated() or list them vertically in the report's Detail section.




