Salvare un report in pdf

di il
5 risposte

Salvare un report in pdf

Ciao ho scritto il seguente codice, ma non riesco a salvare il mio file. Il codice genera automaticamente il nome del file attingendo ai campi della maschera Nome e cognome e secondo il codice dovrebbe salvare il file con una striga "yyyymmddhhnnss" se il nome del file risultasse vuoto.

Il mio problema che continua a chiedermi il nome del file. 

Questo è il codice:


Public Sub SalvaRecordInPDF()

    Dim strFolderPath As String
    Dim strFileName As String
    Dim strFilePath As String
    
    'Apri la finestra di dialogo della cartella e ottieni il percorso selezionato dall'utente
    With Application.FileDialog(3)
        .Title = "Seleziona la cartella in cui salvare il file PDF"
        .ButtonName = "Seleziona"
        If .Show = -1 Then
            strFolderPath = .SelectedItems(1)
        Else
            Exit Sub 'L'utente ha annullato la finestra di dialogo
        End If
    End With
    
    'Crea il nome del file utilizzando il nome e il cognome del record corrente
    strFileName = Nz(Me!Nome, "") & "_" & Nz(Me!Cognome, "")
    
    'Se il nome del file è vuoto, crea un nome di file predefinito utilizzando la data e l'ora corrente
    If Len(strFileName) = 0 Then
        strFileName = "RecordPDF" & Format(Now(), "yyyymmddhhnnss")
    End If
    
    'Aggiungi l'estensione del file PDF al nome del file
    strFileName = strFileName & ".pdf"
    
    'Crea il percorso completo del file PDF utilizzando il percorso della cartella selezionata e il nome del file
    strFilePath = strFolderPath & "\" & strFileName

    
    'Controlla se il file esiste già nella cartella selezionata
    If Dir(strFilePath) <> "" Then
        If MsgBox("Il file esiste già. Vuoi sovrascriverlo?", vbQuestion + vbYesNo, "File esistente") = vbNo Then
            Exit Sub 'L'utente ha scelto di non sovrascrivere il file
        End If
    End If
    
    On Error GoTo ErrorHandler
    
    'Esporta il record corrente come file PDF utilizzando il percorso completo del file creato in precedenza
    DoCmd.OutputTo acOutputReport, "Clienti", acFormatPDF, strFilePath, False
    
    'Mostra un messaggio di conferma
    MsgBox "Il record è stato salvato come file PDF nella cartella selezionata."
    
ExitProcedure:
    Exit Sub

ErrorHandler:
    MsgBox "Si è verificato un errore durante il salvataggio del record come file PDF." & vbCrLf & vbCrLf & "Errore " & Err.Number & ": " & Err.Description, vbExclamation + vbOKOnly, "Errore"
    Resume ExitProcedure

End Sub

qualcuno saprebbe dirmi dove sto sbagliando?

Grazie

5 Risposte

  • Re: Salvare un report in pdf

    Prova ad eseguire il codice passo-passo mettendo un breakpoint e premendo F8.

    Visualizza la valorizzazione delle variabilil… magari inserendo dei Debug.Print o anda do a visualizzare l'elenco variabili.

  • Re: Salvare un report in pdf

    'Crea il nome del file utilizzando il nome e il cognome del record corrente
        strFileName = Nz(Me!Nome, "") & "_" & Nz(Me!Cognome, "")
        
        'Se il nome del file è vuoto, crea un nome di file predefinito utilizzando la data e l'ora corrente
        If Len(strFileName) = 0 Then
            strFileName = "RecordPDF" & Format(Now(), "yyyymmddhhnnss")
        End If

    Secondo me in questo punto strFileName non avrà mai lunghezza 0. Fosse anche solo per l'underscore che hai inserito.

  • Re: Salvare un report in pdf

    28/03/2023 - OsvaldoLaviosa h

    Secondo me in questo punto strFileName non avrà mai lunghezza 0. Fosse anche solo per l'underscore che hai inserito.

    Quindi…?

    Come ha specificato e come il codice espone, nel caso in cui risultasse vuoto… quindi si aspetta che Nome e Cognome siano valorizzati, ma non lo fossero…

  • Re: Salvare un report in pdf

    Public Sub SalvaRecordInPDF()

    Osservo che usi una Public Sub…forse all'interno di una maschera, considerando che dichiari Me!Nome, Me!Cognome. Qual'è l'evento scatenante? È una pratica che non ho mai messo in atto…boh! 

  • Re: Salvare un report in pdf

    Osvaldo…. ma se non sai le cose non è meglio evitare di intervenire per dire la prima cosa che ti viene in mente…?

    La Sub in form la chiami come si fa con una qualsiasi Sub, pratica mi pare banalmente normale.

    Il fatto sia Public semplicemente la espone all'esterno rendendola chiamabile da codice non interno alla form.

    Che poi sia voluto o meno… altro discorso.

Devi accedere o registrarti per scrivere nel forum
5 risposte