Salvataggio pdf "mirato"

di il
7 risposte

Salvataggio pdf "mirato"

Rieccomi a chiedervi aiuto per realizzare cose che pensavo impossibili.

attualmente utilizzo per stampare in formato pdf dalla maschera con cui creo il documento un pulsante al quale ho associato nell'evento suClick il seguente codice:


Dim Nomefile As String
Dim percorso As String

DoCmd.OpenReport "FATTURE INSTALLAZIONE", acViewPreview, "", "", acNormal
percorso = "" & ([Forms]![PANNELLO comandi]![STAMPE]) che ha come valore predefinito H:\AGEST\NEOS 2015\stampe2015\
Nomefile = "" & ([Forms]![Fatture]![n° fattura])
DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso,cartella & Nomefile & ".pdf", True


quindi il percorso di salvataggio generico dovrebbe essere definito dal controllo [STAMPE] nel [pannello comandi] che però sarò uguale per diversi report (es. FATTURE, DDT, NDA ecc.) creandomi non poca confusione.


Vorrei fare in modo che i documenti vengano salvati nella cartella dedicata, fattura nella cartalle FATTURE, ddt nella cartella DDT ecc ecc. mantenedo sempre parte del percorso di salvataggio in comune , quello definito da [pannello comandi][stampe] che nel mio caso è H:\AGEST\NEOS 2015\stampe2015\ .e definendo in quale cartella salvare il documento nel codice pulsante suClick di ogni singola mascera a seconda del tipo di documento.


per far ciò pensavo di aggiungere la stringa "cartella" come nel codice riportato sotto,...


Dim Nomefile As String
Dim percorso As String
Dim cartella As String

DoCmd.OpenReport "FATTURE INSTALLAZIONE", acViewPreview, "", "", acNormal
percorso = "" & ([Forms]![PANNELLO comandi]![STAMPE]) che ha come valore predefinito H:\AGEST\NEOS 2015\stampe2015\
Nomefile = "" & ([Forms]![Fatture]![n° fattura])
DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso , cartella & Nomefile & ".pdf", True


...ma in questo modo mi da errore di runtime 2498 Tipo di dati dell'espressione errato per uno degli argomenti





dove sbaglio?


Grazie

7 Risposte

  • Re: Salvataggio pdf "mirato"

    Mi sento fresco fresco di VBA, ma credo di conoscere il tipo di azione che vuoi fare. Ti consiglio di usare sintassi più semplificate e sfruttare il più possibile le variabili. Faccio fatica a leggere quei codici (ne ho prodotto uno simile proprio pochi giorni fa...). Sicuramente non devi compilare gli argomenti vuoti con "", ma scrivere direttamente , (virgola) e passare al successivo. I path memorizzali subito in una variabile String e passa preferibilmente la variabile dentro gli argomenti.
    percorso = "" & ([Forms]![PANNELLO comandi]![STAMPE]) che ha come valore predefinito H:\AGEST\NEOS 2015\stampe2015\
    Nomefile = "" & ([Forms]![Fatture]![n° fattura])
    Queste 2 assegnazioni sono certamente errate.
  • Re: Salvataggio pdf "mirato"

    Ciao

    la prima delle assgnazioni che mi hai indicato come errate , in parte è una mia descrizione , il codice è:

    Dim Nomefile As String
    Dim percorso As String

    DoCmd.OpenReport "FATTURE INSTALLAZIONE", acViewPreview, "", "", acNormal
    percorso = "" & ([Forms]![PANNELLO comandi]![STAMPE])
    Nomefile = "" & ([Forms]![Fatture]![n° fattura])
    DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso,cartella & Nomefile & ".pdf", True.

    con questa sequenza però il salvataggio viene effettuato con il n° della fattura ma in una cartella generica, non nella cartella fatture.
  • Re: Salvataggio pdf "mirato"

    Dim Nomefile As String
    Dim percorso As String
    ' Sicuramente non capisco perchè metti doppie virgolette in questi argomenti. Lasciali vuoti.
    DoCmd.OpenReport "FATTURE INSTALLAZIONE", acViewPreview, "", "", acNormal
    'Anche qui non capisco "" prima di &. Poi sicuramente sono sbagliate le parentesi tonde (toglile)percorso = "" & ([Forms]![PANNELLO comandi]![STAMPE]) 
    Nomefile = "" & ([Forms]![Fatture]![n° fattura])
    DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso, cartella & Nomefile & ".pdf", True.
    Quando scrivi un codice nel forum, selezionalo tutto e poi clicca sul tasto in alto

    Vedi se può esserti di spunto questo codice (quello di cui parlavo prima)
    Private Sub SEAR_Click()
    Dim PathReferto, PathCartellaPaziente, Paziente, DN, DV As String
    Paziente = Me!IDPaziente.Column(1)
    DN = Format(Me!IDPaziente.Column(2), "yyyy-mm-dd")
    DV = Format(Me!DataVisita.Value, "yyyy-mm-dd")
    PathCartellaPaziente = Paziente & " " & DN
    PathCartellaPaziente = "E:\Pazienti\PAZIENTI\" & PathCartellaPaziente
    PathReferto = PathCartellaPaziente & "\" & DV & ".rtf"
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.OpenReport "RefertoCorrente", acViewPreview
    'Crea la CartellaPaziente solo se non c'è
    If Dir(PathCartellaPaziente, vbDirectory) = "" Then MkDir PathCartellaPaziente
    'Esporta il RefertoCorrente.rtf solo se non è presente nella cartella Paziente
    If Dir(PathReferto, vbDirectory) = "" Then DoCmd.OutputTo acOutputReport, "RefertoCorrente", acFormatRTF, PathReferto
    'Apre il RefertoCorrente.rtf
    Application.FollowHyperlink PathReferto, , True
    End Sub
  • Re: Salvataggio pdf "mirato"

    Forse non sono riuscito a spiegarmi. la prima parte di codice che ho inserito funziona correttamente,

    vorrei solo aggiungere la possibilità di indicare anche la cartella dove devono essere salvati i documenti infatti nell 2° esempio ho provato ad inserire dim cartella as string ed in DOcmd percorso, cartella ....credo che il mio errore stia qui.
    
    Dim Nomefile As String
    Dim percorso As String
    Dim cartella As String
    
    DoCmd.OpenReport "FATTURE INSTALLAZIONE", acViewPreview, "", "", acNormal
    percorso = "" & ([Forms]![PANNELLO comandi]![STAMPE])   che ha come valore predefinito H:\AGEST\NEOS 2015\stampe2015\
    Nomefile = "" & ([Forms]![Fatture]![n° fattura])
    DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso , cartella & Nomefile & ".pdf", True
  • Re: Salvataggio pdf "mirato"

    Per memorizzare il solo percorso cartella devi scrivere così:
    Dim cartella As String
    cartella = "H:\AGEST\NEOS 2015\stampe2015\"
    poi devi correggere le sintassi:
    percorso = [Forms]![PANNELLO comandi]![STAMPE]
    Nomefile = [Forms]![Fatture]![n° fattura]
    Sia chiaro che questo presuppone che la cartella "stampe2015" con quel percorso esiste davvero, altrimenti è ovvio che non trova il path corrispondente.

    Rileggendo il tuo codice. Perchè hai 2 variabili percorso e cartella, quando potresti sfruttarne solo una?
  • Re: Salvataggio pdf "mirato"

    OsvaldoLaviosa ha scritto:


    Per memorizzare il solo percorso cartella devi scrivere così:
    Dim cartella As String
    cartella = "H:\AGEST\NEOS 2015\stampe2015\"
    poi devi correggere le sintassi:
    percorso = [Forms]![PANNELLO comandi]![STAMPE]
    Nomefile = [Forms]![Fatture]![n° fattura]
    Sia chiaro che questo presuppone che la cartella "stampe2015" con quel percorso esiste davvero, altrimenti è ovvio che non trova il path corrispondente.
    Rileggendo il tuo codice. Perchè hai 2 variabili percorso e cartella, quando potresti sfruttarne solo una?
    Ho aggiunto la seconda variabile perchè la variabile PERCORSO è una situazione comune a più maschere/report . mentre CARTELLA dovrebbe indicare per ogni maschera/report in quale cartella andare a salvare il file.
    Ad esempio dalla maschera [fatture] aprirò il report "stampa fattura" ed il file pdf verrà memorizzato in: H:\AGEST\NEOS 2015\stampe2015\FATTURE\fattura2015009.
    Dalla maschera [ddt] aprirò il report "stampa ddt" ed il file pdf verrà memorizzato in: H:\AGEST\NEOS 2015\stampe2015\DDT\ddt2015120.
    dalla maschera [nda] aprirò il report "stampa nda" ed il file pdf verrà memorizzato in: H:\AGEST\NEOS 2015\stampe2015\NDA\nda2015008.
    ecc. ecc.

    Come vedi la prima parte di percorso è comune H:\AGEST\NEOS 2015\stampe2015 ( per me è percorso) ed è la parte che io, una sola volta all'anno vado a cambiare nella maschera [pannello comandi] al controllo [stampe] dopo aver creato le cartelle che mi servono (neos20xx\stampe20xx\fatture...ddt....nda).
    "Cartella" mi dovrebbe servire nel codice creato in ogni singola maschera per indicare in quale cartella andare a salvare il file. pertanto nel codice che associo all'evento Click della maschera fatture dovrò indicare come "cartella" fatture; nella maschera DDT la "cartella" DDT; nella maschera NDA la "cartella" NDA.

    non riesco a capire in quale punto dell'istruzione
    DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso & Nomefile & ".pdf", True
    posso andare ad indicare la cartella perchè se la inserisco in questo modo
    DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso, cartella & Nomefile & ".pdf",true
    mi da l'errore runtime che ho indicato all'inizio del treath
  • Re: Salvataggio pdf "mirato"

    RISOLTO
    era talmente banale,
    era sufficiente aggiungere:
    &"\fatture\"
    alla stringa "percorso"
    DoCmd.OpenReport "FATTURE INSTALLAZIONE", acViewPreview, , , acNormal
    percorso = [Forms]![PANNELLO comandi]![STAMPE] & "\fatture\"
    Nomefile = [Forms]![fatture]![n° fattura]
    DoCmd.OutputTo acOutputReport, "FATTURE INSTALLAZIONE", acFormatPDF, percorso & Nomefile & ".pdf", True
Devi accedere o registrarti per scrivere nel forum
7 risposte