Hello,
If you are trying to print a separate report for each customer it is actually fairly simple to loop through each one. I actually have to do this fairly often with financial reports at the bank where I work. I assume that you have a table listing the Customer's names and a unique identifying number as you mentioned in your second comment. Here is a simple example of the code.
Public Sub CustomerReports()
Dim CustomerNumber As Integer
Dim db As Database
Dim SqlString As String
Dim Qdf As QueryDef
Set db = CurrentDb
For CustomerNumber = 1 To 6
SqlString = "SELECT Tbl_CustomerInfo.Name, Tbl_CustomerInf

rder, Tbl_CustomerInfo.Address, Tbl_CustomerInfo.Phone FROM Tbl_CustomerInfo WHERE (((Tbl_CustomerInfo.CustomerID)= " & CustomerNumber & "

);"
Set Qdf = db.CreateQueryDef("CustomerReport", SqlString)
'''''''''''''''Code here would open up your report and export or print it to your .pdf file. I have never done this before (I normally export to Excel) but you can still use the CustomerNumber variable or any other variable you choose to name the report once it has been exported so as to differentiate it from the others. You could also just print it directly depending on your needs.'''''''''''''
DoCmd.DeleteObject acQuery, "CustomerReports"
Set Qdf = Nothing
NextCustomer:
Next CustomerNumber
MsgBox "All customer reports have now been exported."
End Sub
As I said, this is very simple, but what is does is loop as many times as you tell it to. If there are 25 customers then the code will say "For CustomerNumber = 1 To 25" Every time the code loops again it will put the next variable in as the criterion in your CustomerReport query. As I mentioned, once the query has been created, the report based off the query can be opened and manipulated as you see fit using the same variable that was used as the criterion for the query. Once the report has been printed or saved with a unique name (ie Customer#17 - from the CustomerNumber variable - "Customer#" & CustomerNumber) the code will delete the query that was created, loop to the next number and recreate the query with the next number as the criterion. If you want to see the code in action, create a rudimentary table named Tbl_CustomerInfo with the following fields: 1. Name, 2. CustomerID, 3. Order, 4. Address, 5. Phone. Make sure that the CustomerID field is a number and not text. Put in 6 rows of bogus data with the customer ID field in sequential order and step through it. You will see it create the query for customer 1, delete it then create the query for customer 2 etc. The only thing missing will be to export the data before the query is deleted. That will be up to you. Just keep playing with it though, that is how most people learn. The Access and VBA code can do almost anything that you want, it is just a matter of finding out how. In the end, you will find that the code will give you much more flexibility and allow you to use variables to automate tasks that otherwise would take hours of manual manipulation.
Good Luck,
Derek