fdimattei ha scritto:
Provo immediatamente, prima invertendo le due righe di codice, poi nel caso passo allo sleep. 
Recordsetclone....?? Mhhhh no, non proprio. Se ho capito bene il codice anziché attingere i record dalla tabella li prende dai valori caricati in memoria nel set di dati creato all'atto dell'apertura del form. E quindi?
          
nulla, nulla di nulla. Sempre il solito problema, il codice crea file distinti (uno per ogni record, assegnando il nome e l'id corretto preso dalla tabella in questione) ma il contenuto dei campi è sempre relativo al primo dei record   
Ho invertito, come suggerito, il "do.cmd" con il "doevents" e nulla. Inserito "lo sleep" con la relativa dichiarazione iniziale (ho un 64bit), ma nulla.
Ecco il codice, potete aiutarmi? se è un disturbo eccessivo, posso - se nessun si offende - pagare le spese per il tempo e l'ingegno posto.
Option Compare Database
Option Explicit
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Private Sub Creazione_Click()
Dim rs                    As DAO.Recordset
    Dim rpt                   As Access.Report
    Dim sFolder               As String
    Dim sFile                 As String
    Const sReportName = "Mandato"
    sFolder = "C:\Users\Famiglia\Desktop\Mandati\"
    Set rs = Me.RecordsetClone
    With rs
        If .RecordCount <> 0 Then
            'Open the Report
            DoCmd.OpenReport sReportName, acViewPreview, , , acHidden
            'Define a report object so we can manipulate it below
            Set rpt = Reports(sReportName).Report
            
            .MoveFirst
            Do While Not .EOF
                'Build the PDF filename we are going to use to save the PDF with
                sFile = Nz(![id], "") & " " & Nz(![COGNOME], "") & ".pdf"
                sFile = sFolder & sFile
                DoCmd.OutputTo acOutputReport, sReportName, acFormatPDF, sFile, , , , acExportQualityPrint
                Call Sleep(1000)
                DoEvents
               .MoveNext
            Loop
            DoCmd.Close acReport, sReportName
        End If
    End With
 End Sub