Esporta report pdf cliente e nome personalizzato

di il
44 risposte

44 Risposte - Pagina 3

  • Re: Esporta report pdf cliente e nome personalizzato

    Buongiorno willy55,
    ho corretto il codice con l'errore che mi hai segnalato. Precedentemente avevo provato a modificare il codice in quanto credevo che il nome Report potesse dare problemi così l'ho modificato in Report1, ma continua a darmi lo stesso errore e il debug si apre sulla riga che ho messo in grassetto.
    Ti riporto nuovamente il codice
    
    Private Sub cmdexport_Click()
    
    Dim DBCorrente As DAO.Database
    Dim variabile As DAO.Recordset
    Set DBCorrente = CurrentDb
    Set variabile = DBCorrente.OpenRecordset("Query1", dbOpenDynaset)
    Do Until variabile.EOF
        DoCmd.OpenReport "Report1", , , "[IDCliente] = " & variabile![IDCliente]
      [b]  DoCmd.OutputTo acOutputReport, "Report1", acFormatPDF, "C:\Users\Luca Masenelli\Desktop\test stampa\" & Format(Reports![Report1]![IDCliente]) & ".pdf", True[/b]
        DoCmd.Close "Report1"
        variabile.MoveNext
    Loop
    variabile.Close
    DBCorrente.Close
    End Sub
    
    Non riesco a capire dove sbaglio
  • Re: Esporta report pdf cliente e nome personalizzato

    Format(Reports![Report1]![IDCliente])
    Siamo sicuri che questa sintassi ha un senso? Sebbene la funzione Format non prevede l'obbligo di compilare gli argomenti successivi, ma...a me qualcosa non torna. Io scriverei qualcosa come
    Format(Reports![Report1]![IDCliente], "00000")
    leggi anche qui
    https://docs.microsoft.com/it-it/dotnet/standard/base-types/custom-numeric-format-strings
  • Re: Esporta report pdf cliente e nome personalizzato

    Monster88 ha scritto:


    
    DoCmd.OpenReport "Report1", , , "[IDCliente] = " & variabile![IDCliente]
    DoCmd.OutputTo acOutputReport, "Report1", acFormatPDF, "C:\Users\Luca Masenelli\Desktop\test stampa\" & Format(Reports![Report1]![IDCliente]) & ".pdf", True
    
    Vai a leggere un valore da un report? Ce l'hai già lì, in variabile![IDCliente], da completare con la proprietà Value, a scanso di equivoci.
    Se poi quel codice cliente deve avere un formato particolare, allora si ragiona con il format.
    Poiché va a formare il nome del file, quel valore non deve contenere caratteri vietati che puoi ottenere cercando di rinominare un file a tua scelta (ovviamente che non sia uno di quelli di sistema o simili) inserendo il punto interrogativo (ad esempio) e vedrai l'elenco dei caratteri vietati. Se è possibile che siano presenti in IDCliente bisogna andare di Replace.

    Nel db che avevi caricato come demo (magari adesso l'hai modificato) query1 voleva una data: in un modo o nell'altro gliela devi passare altrimenti non si riuscirà mai ad aprire un report associato a quella query.
  • Re: Esporta report pdf cliente e nome personalizzato

    Grazie Osvalto e grazie Phil,
    ho corretto la sintassi come suggerito da Osvaldo, ora la domanda è: come faccio a fargli rilevare la data?
    Ho una maschera chiamata Mdatariferimento che viene aperta quando apro il report, tramite una macro e un modulo.

    Ho provato con il
    DoCmd.RunMacro"Macro1"
    ma non funziona
  • Re: Esporta report pdf cliente e nome personalizzato

    Conviene prelevare sempre i valori da maschera, quindi
    Forms!NomeMaschera!NomeCampoData restituirà la data nel formato "predefinito". Se hai bisogno di "scriverlo" in un formato a te più congeniale, la funzione Format torna nuovamente comoda. Altrimenti prova
    Reports!NomeReport!NomeCampoData
  • Re: Esporta report pdf cliente e nome personalizzato

    Grazie Osvaldo, la sintassi è chiara, quello che non mi è chiaro è dove inserirla
  • Re: Esporta report pdf cliente e nome personalizzato

    Monster88 ha scritto:


    Grazie Osvaldo, la sintassi è chiara, quello che non mi è chiaro è dove inserirla
    Non ci hai mai detto dove e in quale codice vuoi inserirla.
  • Re: Esporta report pdf cliente e nome personalizzato

    Dovrei inserirla nel codice precedente; quando l'utente clicca su export pdf singoli dovrebbe aprire la maschera per impostare la data della query e poi generare un pdf singolo per ogni cliente
    
    Private Sub cmdexport_Click()
    
    Dim DBCorrente As DAO.Database
    Dim variabile As DAO.Recordset
    Set DBCorrente = CurrentDb
    Set variabile = DBCorrente.OpenRecordset("Query1", dbOpenDynaset)
    Do Until variabile.EOF
        DoCmd.OpenReport "Report1", , , "[IDCliente] = " & variabile![IDCliente]
      [b]  DoCmd.OutputTo acOutputReport, "Report1", acFormatPDF, "C:\Users\Luca Masenelli\Desktop\test stampa\" & Format(Reports![Report1]![IDCliente]) & ".pdf", True[/b]
        DoCmd.Close "Report1"
        variabile.MoveNext
    Loop
    variabile.Close
    DBCorrente.Close
    End Sub
    
  • Re: Esporta report pdf cliente e nome personalizzato

    Se hai un campo Data da qualche parte, sfrutta quello.
    Se le query (come vedo) vengono generate tutte lo stesso giorno, che poi si tratta del giorno "in corso", ti basta sfruttare l'espressione Date() che significa "data odierna".
  • Re: Esporta report pdf cliente e nome personalizzato

    Ho il campo data nella tabella rifornimenti, ma devo prelevare la data richiesta in quanto non sempre è la data odierna, a volte è del giorno precedente o di 2 giorni precedenti, per quello la query è generata da questa tabella e ha la data di riferimento come criterio
  • Re: Esporta report pdf cliente e nome personalizzato

    Non puoi aggiungere un campo [data richiesta] nella tabella Rifornimenti?
  • Re: Esporta report pdf cliente e nome personalizzato

    Potrei, ma perde di utilità, la query filtra la data
  • Re: Esporta report pdf cliente e nome personalizzato

    1. Tu includi [data richiesta] nella tabella e nella query.
    2. variabile è un Recordset e il valore variabile![data richiesta] può essere tranquillamente prelevato, quindi aggiunto nella sintassi finale del nome file PDF da esportare.
  • Re: Esporta report pdf cliente e nome personalizzato

    Forse mi sono spiegato male, il campo data e data riferimento dovrebbero essere uguali quindi ci sarebbero dati ridondanti.
    Il problema non sta nel output di un file con il nome della data di riferimento ma il filtro sulla query.
    Quando l'utente clicca il bottone Export PDF singoli si dovrebbe aprire la maschera Mdatariferimento in cui impostare la data e cliccando OK venga inserita come criterio della query.
    Quindi l'idea era usare DoCmd.OpenForm per aprire la maschera Mdatariferimento prima che venga eseguito il codice indicato in precedenza e, dopo aver inserito la data nella textbox come suggerito da te in precedenza, cliccando su OK impostare il valore che genera il filtro della query che poi verrà lavorato dal Do...Loop generando i singoli Report.
    Il mio problema è che non so come scrivere questa parte del codice e dove inserirlo.
  • Re: Esporta report pdf cliente e nome personalizzato

    Non ti serve scrivere altro codice. Si tratta solo di trasformare la tua query in "query parametrica", ossia nel Criterio del campo Data scriverai qualcosa come
    [Digita la Data da filtrare]
    Ti apparirà una piccola finestra dove devi inserire la Data da filtrare. Tutto il resto del codice VBA resta inalterato.
    N.B.: Quando vai a digitare la data, assicurati di farlo nello stesso FORMATO previsto dal campo stesso. Anche una piccola omissione o imprecisione di caratteri compromette l'eseguibiltà del parametro, quindi della query, quindi del report, quindi dell'export PDF.
Devi accedere o registrarti per scrivere nel forum
44 risposte