To loop through you need to do something like this...
Public Sub rtTradeConfirmGeneral()
Dim strCustomerName As String
Dim intRecordCnt As Integer
Dim d As Integer
Dim stDocName As String
Dim strMessageBody As String
'generate a list of clients that need confimrming.
Set rstChkConfirm = New ADODB.Recordset
rstChkConfirm.CursorLocation = adUseClient
rstChkConfirm.Open "SELECT Count(tblBrokers.BrokerName) AS CountOfBrokerName, tblTrades.TradeConfirm, tblBrokers.BrokerName, tblCustomers.customerName, tblBrokers.EmailContact FROM tblCustomers INNER JOIN (tblBrokers INNER JOIN tblTrades ON tblBrokers.brokerID = tblTrades.BROKERID) ON tblCustomers.Customer = tblBrokers.CUSTOMERID GROUP BY tblTrades.TradeConfirm, tblBrokers.BrokerName, tblCustomers.customerName, tblBrokers.EmailContact HAVING (((tblTrades.TradeConfirm)=No) AND ((tblBrokers.EmailContact) Is Not Null));", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'Set the amount of loops to run
intRecordCnt = rstChkConfirm.RecordCount
For d = 1 To intRecordCnt
'Set strCustomerName as a customer name
strCustomerName = rstChkConfirm("BrokerName")
'Set the email for filtering the report
strEmail = rstChkConfirm("EmailContact")
DoCmd.SendObject acSendReport, "rptConfirm", acFormatHTML, strEmail, , , "Trade Confirms from Kyte Options " & date, , no, False
rstChkConfirm.MoveNext
Next d
'Turn off the system warning
DoCmd.SetWarnings False
'set the confirmed button
DoCmd.RunSQL "UPDATE tblBrokers INNER JOIN tblTrades ON tblBrokers.brokerID = tblTrades.BROKERID SET tblTrades.TradeConfirm = Yes WHERE tblTrades.TradeConfirm = No AND tblBrokers.EmailContact Is Not Null OR tblBrokers.EmailContact= ' & strEmail & ' ;"
'Turn on the system warning
DoCmd.SetWarnings True
rstChkConfirm.Close
End Sub