Dim db As Database
Dim rst1 As DAO.Recordset
Dim strTo As String
Dim strSubject, NomeFileStr, DenStr As String
Dim strMessageText As String
on error goto LblErr
Set db = CurrentDb
Set rst1 = db.OpenRecordset("qry_MassivoMail", dbOpenDynaset)
rst1.MoveFirst
Do While not rst1.eof
email = rst1("EMail")
NomeFileStr = "Veicolo:" & Me.txtVeicolo
DenStr = Me.txtDenom
strTo = Me.txtEmail1
strSubject = NomeFileStr
strMessageText = DenStr
DoCmd.OpenReport "RptInvio", acViewPreview, , "tblVeicoli.IDVeicolo = " & Me!IDVeicolo
DoCmd.SendObject ObjectType:=acSendReport, _
ObjectName:="RptInvio", _
OutputFormat:=acFormatPDF, _
To:=strTo, _
Subject:=strSubject, _
MESSAGETEXT:=strMessageText, _
EditMessage:=true
DoCmd.Close acReport, "RptInvio"
rst1.MoveNext
Loop
rst1.Close
set rst1 = nothing
'
ExitHere:
exit sub
'
LblErr:
MsgBox (Err.Description)
Exit Sub
Adesso dovresti avere un codice che effettua lo scorrimento del recordset (salvo errori di digitazione ... non ho Access sotto mano).
Guardalo e cerca di apprendere alcuni concetti basilari :
- dichiarazione del recordset (corretto richiamo della libreria di riferimento DAO vs ADO)
- apertura recordset ( se non lo aggiorni non serve dbOpenDynaset -> cerca la costante più adatta ad un'apertura in readonly)
- loop (do while not eof -> se il recordset è vuoto non entra nel loop)
- scorrimento del recordset all'interno del loop (movenext, generalmente come ultima istruzione del loop)
- chiusura del recordset (close)
- distruzione del recordset (nothing)
- un minimo di gestione degli errori (on error goto ...)
- soppressione dell'uso del goto (viene usato generalmente solo per la gestione degli errori)
- indentazione del codice .....
Le azioni da fare all'interno del loop devi verificarle tu