Others

How to Display Multiple Employees for One Complaint in an Access Report

John WilsonJohn Wilson Sep 28, 2026 870 views

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.

How to Display Multiple Employees for One Complaint in an Access Report
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.
Before you start

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.

Solution 1Recommended

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.

1
Create a junction table

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.

2
Define table relationships

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.

3
Set up the data entry subform

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.

4
Concatenate names for the report

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.

Use a Junction Table and VBA Concatenation
VBA Requirement: Access does not have a built-in aggregate function to concatenate text rows into a single string. Implementing a custom VBA module is required if you want all names separated by commas in a single text box.
Free Microsoft Office alternative

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.

Highly compatible with Microsoft Excel, Word, and PowerPoint formats.Lightweight design for fast startup and smooth operation on any device.Built-in PDF editing, merging, and format conversion tools.User-friendly spreadsheet interface for data tracking that requires no complex VBA coding.
microsoft office alternative - wps office

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.