Inviare automaticamente un e. mail per ogni record di un report.

di il
12 risposte

Inviare automaticamente un e. mail per ogni record di un report.

Buonasera a tutti. Mi scuso in anticipo perché le mie richieste sono sempre un po' strane, ma mi trovo in questa situazione:

Io ho un report col quale comunico ai nostri collaboratori la documentazione mancante alla chiusura di una loro pratica, e ho inserito un comando di "Interruzione pagina" di modo che ogni nuovo record (ogni record riguarda un solo collaboratore) inizia su una nuova pagina (e occupa una sola pagina). Fra i vari campi di ogni record c'è anche l'indirizzo e. mail del collaboratore.

Ora io mi chiedo se è possibile fare in modo che ogni singolo record del report venga inviato direttamente alla e. mail di quel record, così, per esempio, se il report è di 12 record, automaticamente vengono spedite 12 e. mail.

Per favore non ridete di me se chiedo l'impossibile o se la domanda è sciocca.

Vi ringrazio anticipatamente e vi auguro una buona serata.

12 Risposte

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    Assioma: le domande non sono (quasi ;-)) MAI sciocche.

    Ma lo possono essere le “risposte” ;-)

    PS: ci sono casi in cui vengono poste delle domande che trovano risposta in tempo ZERO con una ricerca su Google/Wikipedia,
    MA sono casi rari E NON E' QUESTO il caso ;-)

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    16/05/2023 - Ciccio_54 ha scritto:


    Per favore non ridete di me se chiedo l'impossibile o se la domanda è sciocca.

    Ciao,

    Vabb…. io rido comunque, va bene ?  ;)))  (scherzo)

    Occorrerebbe sapere se vuoi mandare come allegato oppure come Testo del Messaggio E-mail.

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    Concettualmente la mail si manda per ogni Record ma non del Report, quanto dell'Origine dati, questa precisazione è doverosa in quanto l'azione di INVIO dovrebbe nascere dalla Form e non dal Report, perchè per come è strutturato non è adatto.

    Se poi alla mail devi allegare il Report con dei dati specifici per ogni Record la cosa è più articolata ma pur sempre fattibile.

    Quindi si deve ragionare a partire dalla maschera come oggetto di interfaccia operatore, e da li si opera.

    Detto questo, il problema diventa ora tecnico di metodo, e, la tua preparazione sicuramente può essere dirimente nella possibilità di farlo… 

    Tieni conto che per mandare una mail ci sono vari modi, ad esempio vari Client di posta da usare se devi allegare mail, oppure si può usare banalmente il metodo “SendObject” ma solo alle condizioni indicate, e privo di formattazioni Html.
    Per invii più complessi occorre usare Librerie esterne come quella di MSOutlook o altre a seconda di cosa disponi tu nel tuo sistema.

    Tengo tuttavia ad essere realista, se non hai una sufficiente base tecnica, non sarà un lavoro mordi e fuggi… 

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    Io vorrei mandare il singolo record come allegato, perché contiene tutto il necessario.

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    Scusate tutti, mi sono dimenticato di dirvi che il mio provider è Aruba e utilizzo Microsoft Outlook 2016.

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    Se vuoi mandate un allegato allora si tratta di un report e non di testo scritto nel corpo della mail.

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    16/05/2023 - Ciccio_54 ha scritto:


    Scusate tutti, mi sono dimenticato di dirvi che il mio provider è Aruba e utilizzo Microsoft Outlook 2016.

    Ipotizzo che il report non contenga le insolvenze di tutti i clienti… ma solo quelle del destinatario… quindi è un REPORT FILTRATO per Anagrafica Cliente… 

    In questo caso usa come suggerito SendObject e non devi preoccuparti del client di posta, se configurato viene usato di default.

    P.S. Noi diamo per scontato che il tuo Database sia Normalizzato quindi ogni Cliente registrato in Anagrafica ha una Forma di archiviazione strutturata delle documentazioni richieste, di conseguenza delle Insolvenze… da quì la logica di estrarre i dati per Anagrafica, stampare il Report in PDF ed inviarlo.

    Sei sicuro di comprendere bene i suggerimenti forniti…?

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    Io credo di aver capito, ma il mio problema è che in questo report ogni record è indirizzato a u collaboratore diverso e ha i dati che interessano solo i clienti di quel collaboratore, e quindi ogni record consiste in una pagina a sé stante e deve essere inviato all'indirizzo di quel collaboratore, diverso per ogni record,

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    16/05/2023 - Ciccio_54 ha scritto:


    Io credo di aver capito, ma il mio problema è che in questo report ogni record è indirizzato a u collaboratore diverso e ha i dati che interessano solo i clienti di quel collaboratore, e quindi ogni record consiste in una pagina a sé stante e deve essere inviato all'indirizzo di quel collaboratore, diverso per ogni record,

    Come hanno già detto sopra i metodi sono molteplici e tutto dipende dalla struttura del tuo DB e dalle conoscenze in tuo possesso.

    Per esempio:

    1. retrieve recordsorce del report in un recordset
    2. leggere uno alla volta i records del recordset per estrarre Id del cliente e Email di destinazione
    3. openreport Hidden impostando nella where condition Id cliente da selezionare
    4. output report in file PDF
    5. send mail allegando il file PDF che contiene il documento da inviare all'email del destinatario
    6. loop al successivo record e si riparte dal punto 1.

    piccolo esempio di un possibile metodo

    Sub MySendMailReport(strReport As String, strFullPath As String)
    ' open report
    DoCmd.OpenReport strReport, acViewDesign, , , acHidden
    ' open report recordset
    Dim rs As Recordset
    Set rs = DBEngine(0)(0).OpenRecordset(Reports(strReport).RecordSource)
    ' close report
    DoCmd.Close acReport, strReport
    ' read recordset
    Do While Not rs.EOF
       ' open report and where condition
       DoCmd.OpenReport strReport, acViewReport, , "IdCliente=" & rs.Fields("IdCliente").Value, acHidden
       ' create Pdf file
       DoCmd.OutputTo acOutputReport, strReport, acFormatPDF, strFullPath
       ' send mail
       .......tuo metodo per Send E-Mail con ==>> rs.Fields("Email").value
       ' close report
       DoCmd.Close acReport, strReport
       ' move next
       rs.MoveNext
    Loop
    ' close
    rs.Close
    Set rs = Nothing
    End Sub

    Ma devi passare delle informazioni per capire se nel tuo DB esistono chiavi univoche per le selezione etc… come anche gli altri ti hanno richiesto di far sapere…

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    OK, grazie mille.

    Domani ci provo e vi faccio sapere.

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    16/05/2023 - Ciccio_54 ha scritto:


    OK, grazie mille.

    Domani ci provo e vi faccio sapere.

    Io non so se hai compreso l'esempio e i vari passaggi… sarebbe utile non provare, ma essere consci di cosa si puo' fare.

    Ripeto, i sistemi/metodi sono molteplici e questo magari è uno di quelli meno adatto la tuo caso,.. non avendo informazioni in merito ti ho solo dato una traccia, ma è come aver tirato ad indovinare… vedi i messaggi di @Alex che è stato molto molto chiaro in merito.

    Almeno una traccia della fase del progetto dove vuoi eseguire tali azioni, sarebbe non utile, ma indispensabile che devi esplicitare come prima cosa nella richiesta che hai postato.

  • Re: Inviare automaticamente un e. mail per ogni record di un report.

    Io ringrazio tutti e vi terrò informati dei miei progressi.

    A presto.

Devi accedere o registrarti per scrivere nel forum
12 risposte