if you are talking about creating a separate report for each customer you would have to cycle through a recordset run the report then move to the next item in the recordset.
so let's say you have a query that correctly identifies the clients that need a letter (let's call it qryClientList) you would have something like
Code:
dim db as databvase
dim rst as recordset
dim CustID as long 'assuming the customer id is the driving force and it's a number (autonumber) field
set db = currentdb
set rst = db.openrecordset(qryClientLIst)
if rst.recordcount <> 0 then
do while rst.eof <> true
CustID = rst!custID
'DO WHATEVER YOU'RE GOING TO DO WITH YOUR PDF CREATION HERE USING THE CUST ID FROM YOUR RECORDSET
'You can set a filter
'OR build a SQL ROWSOURCE statement
'OR populate a field on a form with the client identifier to show who is currently being processed as it happens and use the field on the form as your criteria for a static query
loop
else
msgbox "NO RECORDS IN RECORDSET", vbokonly, "BLAH BLAH"
endif
set db = nothing