Stampa ricursiva in PDF da maschera continua

di il
4 risposte

Stampa ricursiva in PDF da maschera continua

Buongiorno a Tutti
Ho una tabella Fatture e relativa maschera continua. Alla fine dell'anno fiscale, l'obiettivo sarebbe quello di stampare in PDF tutte le fatture singolarmente nominandole con CognomeNome.pdf e poi archiviarle su cloud o disco esterno.
Ho scritto un piccolo codice che vorrei facesse questa cosa ma non funziona, in quanto stampa i singoli file con CognomeNome.pdf di ogni record ma dentro ai singoli file sono presenti tutte le fatture, mentre l'obiettivo sarebbe quello di avere un file.pdf per ogni fattura.
Qualcuno mi darebbe una mano a capire dove sto sbagliando ?
Grazie

Dim db As DAO.Database
Dim Tabella1 As DAO.Recordset
Dim rs As DAO.Recordset
Dim ConteggioRighe As Integer
Dim strReportName As String
Dim strWhere As String
Dim percorsoDir As String
Dim Nomefile As String
Dim Surname As String
Dim Name As String


'Definizione path di scrittura
percorsoDir = "C:\OutputPDF"

'Apertura DB
Set db = CurrentDb

'Apertura tabella
Set Tabella1 = db.OpenRecordset("Fatture", dbOpenDynaset)
'Apertura recodset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Fatture", dbOpenDynaset)
ConteggioRighe = rs.RecordCount

'Solo per debug poi si cancella
ConteggioRighe = DCount("*", "[Fatture]")
'MsgBox "N. Righe Auto = " & ConteggioRighe

'Mi posiziono sul primo record
rs.MoveFirst

Do Until rs.EOF

'Definisco il nome del report da eseguire
strReportName = "Stampa_Fatture_PDF"

'Assegno il cognome a Surname
Surname = rs.Fields("Cognome")
'Assegno il nome a Name
Name = rs.Fields("Nome")

Nomefile = percorsoDir & "\" & Surname & Name & ".pdf"

'Definisco una variabile per identificare il singolo record dal numero fattura
strWhere = rs.Fields("NumeroFattura").Value

'Apro il report
DoCmd.OpenReport strReportName, acViewPreview, , strWhere, acWindowNormal 'A regime AcHidden

'Stampo PDF
DoCmd.OutputTo acOutputReport, strReportName, acFormatPDF, Nomefile

'e chiudo il report che avevo aperto, specificando che non desidero salvarlo
DoCmd.Close acReport, strReportName, acSaveNo

' Passo al recordset successivo
rs.MoveNext

' e ricominciamo da DO ad elaborare la successiva riga del recordset fin quando non si arriva al suo termine EOF
Loop

'Chiusura Tabella
Tabella1.Close
'Chiusura DB
db.Close

4 Risposte

  • Re: Stampa ricursiva in PDF da maschera continua

    Didacus ha scritto:


    'Apertura tabella
    Set Tabella1 = db.OpenRecordset("Fatture", dbOpenDynaset)
    'Apertura recodset
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Fatture", dbOpenDynaset)
    ConteggioRighe = rs.RecordCount
    
    Secondo me queste 2 istruzioni fanno la stessa cosa, ossia aprono lo stesso RECORDSET. La prima non apre una tabella.

    Hai esposto il problema come se i campi Cognome e Nome risiedono direttamente in Fatture. Per me non è chiara la struttura tabelle a monte...mi mancano all'appello più tabelle correlate.

    P.S.: in base al regolamento del forum, abbi cura quando scrivi codice di:
    - scendere già nella finestra editor e cliccare sul tasto "Editor completo & Anteprima"
    - selezionare il codice
    - cliccare sul tasto in alto </>
    in questo modo il codice appare con i tipici carattere monotype più familiari ai programmatori
  • Re: Stampa ricursiva in PDF da maschera continua

    Ad occhio veloce... la WHERE CONDITION è sbagliata... ma anche la valorizzazione di Conteggio
    
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Fatture", dbOpenDynaset)
    rs.Movelast: rs.MoveFirst
    ConteggioRighe = rs.RecordCount
    E per la WHERE
    
    'Definisco una variabile per identificare il singolo record dal numero fattura
    strWhere = "NumeroFattura = " & rs.Fields("NumeroFattura").Value
    Se il campo Numero Fattura è di tipo Testo devi inserire gli apici
    
    'Definisco una variabile per identificare il singolo record dal numero fattura
    strWhere = "NumeroFattura = '" & rs.Fields("NumeroFattura").Value & "'"
    P.S. il codice che hai scritto è pieno di cose INUTILI ridondate ed errate... è un miracolo che vada... l'apertura di [Tabella1] è evidente sia inutile... come il DCOUNT che non serve NEMMENO per il Debug... il Nome di alcune VARIABILI sono nomi riservati...
    Insomma credo dovresti prima di tutto capire quello che fai... poi farlo benino...!
  • Re: Stampa ricursiva in PDF da maschera continua

    Buonasera
    NumeroFattura e' numerico (intero lungo).

    Con la piccola modifica della WHERE adesso funziona

    Sono daccordo sulle ridondanze, e provvedero' ora a ripulire il tutto
    Per adesso un grosso grazie
  • Re: Stampa ricursiva in PDF da maschera continua

    Mi pare si scriva d'accordo.
Devi accedere o registrarti per scrivere nel forum
4 risposte