Second thoughts:
1. The previous solution assumes that you're using a query
as the RecordSource for the report that uses both tables
(containing customer and serial-number data) and that the
query returns multiple records for each customer (i.e. one
record for each serial number).
2. It's occurred to me that you don't need to capture the
customer in the Format Event of the customer GroupHeader.
In fact, you may not need a customer GroupHeader; but you do
need a customer GroupFooter. You could place a bound
TextBox for the customer in the customer GroupFooter. This
will work because, as you're grouping on customer, the
GroupFooter has access to the last row of data for each
customer, which is why a bound TextBox for the customer
could be used instead.
Why use a Group Header?
I suggested using the GroupHeader Format Event because you
can initialize variables in the GroupHeader.
For example if you want the serial numbers to look like this
on the report:
(Serial1, Serial2, Serial3, Serial4, Serial5)
then you'd follow these steps:
1. In the GroupHeader Format event procedure, initialize
the variable holding the serial numbers, like this:
mstrSerialNos = "("
2. Concatenate one serial number and a comma in the Detail
Section's Format event procedure, like this:
mstrSerialNos = mstrSerialNos _
& Me.txtSerialNo & ", "
where Me.txtSerialNo is the TextBox in the Detail Section
bound to the SerialNo field.
3. Remove the last comma and space and add the last bracket
at the beginning of the GroupFooter Format event, like this:
mstrSerialNos = Left(mstrSerialNos, _
Len(mstrSerialNos) - 2) & ")"
4. Place the data in the unbound TextBox in the
GroupFooter, like this:
Me.txtSerials = mstrSerialNos
5. Re-initialize variables back to zero-length strings at
the end of the GroupFooter, like this:
mstrSerialNos = ""
This isn't strictly necessary if you're initializing the
variables in the GroupHeader.
Geoff.