MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]gerar relatório do registro atual e enviar para o email do campo email

    Compartilhe

    andrelecio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/03/2012

    gerar relatório do registro atual e enviar para o email do campo email

    Mensagem  andrelecio em Sex 02 Mar 2012, 06:43

    Saudações,

    Sou iniciante no ACCESS mas vou lá aos trancos conseguindo fazer algo, minha dúvida é a seguinte, eu gostaria de colocar um botão em um formulário que uso para guardar os dados de envios de encomendas como numero dos correios, data de envio que enviasse ao comprador estes mesmos dados baseados no campo email deste formulário, porém qual a rotina que devo usar para:

    1) gerar um pdf do relatório remessas só com o dado atual
    2) anexar este mesmo relatório no outlook
    3) setar o destinatário como o mesmo do campo email do formulário/relatório
    4) setar assunto e corpo da mensagem

    Se alguém puder ajudar agradeço bastante

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3348
    Registrado : 04/04/2010

    Re: [Resolvido]gerar relatório do registro atual e enviar para o email do campo email

    Mensagem  Avelino Sampaio em Sex 02 Mar 2012, 08:51

    Olá

    Veja este meu artigo sobre Accces x Outlook

    [Você precisa estar registrado e conectado para ver este link.]

    Como gerar o PDF:

    [Você precisa estar registrado e conectado para ver este link.]

    e por ultimo um tutorial sobre filtragens

    [Você precisa estar registrado e conectado para ver este link.]

    Bom estudo!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    andrelecio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/03/2012

    Re: [Resolvido]gerar relatório do registro atual e enviar para o email do campo email

    Mensagem  andrelecio em Sab 03 Mar 2012, 02:38

    Obrigado por responder tão prontamente Avelino, segui todos os passos e quando vai enviar o email, apresenta o seguinte erro:

    erro em tempo de execução 2501 - a ação outputTo foi cancelada

    Tens alguma sugestão do que eu possa estar fazendo errado?

    Atualizando:

    Consegui fazer funcionar com o seguinte código que encontrei na internet (do Avelino) com algumas modificações

    Código:
    Private Sub Comando82_Click()
    Dim strArquivo  As String
    Dim strLocal    As String
    Dim stDocName    As String
    Dim str_criterio As String
    Dim objOut      As Object
    Dim objmail    As Object
    Dim objAnexo    As Object
    Const olMailItem = 0
    Const olByValue = 1

    If IsNull(Me!numero) Then Exit Sub
    Set objOut = CreateObject("Outlook.application")
    Set objmail = objOut.CreateItem(olMailItem)
    Set objAnexo = objmail.Attachments
    stDocName = "remessa"
    str_criterio = "[cod_pedido]=" & Me![numero]
    DoCmd.OpenReport stDocName, acViewPreview, , , acHidden, str_criterio
    strArquivo = "C:\Relatorio.pdf"
    strLocal = "C:\Relatorio.pdf"
    If Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
    DoCmd.OutputTo acOutputReport, "remessa", acFormatPDF, "C:\Relatorio.pdf"
    DoCmd.Close acReport, "remessa"
    objAnexo.Add strLocal, olByValue, 1
    objmail.Display
    Set objAnexo = Nothing
    Set objmail = Nothing
    Set objOut = Nothing
    End Sub

    O problema é que não está filtrando corretamente e todos os registros estão sendo impressos no pdf, o que pode estar errado

    andrelecio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/03/2012

    Re: [Resolvido]gerar relatório do registro atual e enviar para o email do campo email

    Mensagem  andrelecio em Dom 04 Mar 2012, 16:46

    Consegui resolver sozinho mesmo pesquisando aqui no forum e estou utilizando dois processos diferentes:

    O Primeiro através do JMail ([Você precisa estar registrado e conectado para ver este link.]

    Vou deixar os passos aqui:

    1. Baixe o Jmail e instale
    2. Habilite no VBA (vba/ferramentas/referências) o Jmail 4.x library

    No meu caso, eu tinha necessidade de mandar um email para o cliente com os dados do pedido dele em pdf, então setei para que o relatório seja executado em segundo plano e enviado para o campo email do registro atual já no formato pdf, entretanto o problema era que o pdf mostrava todos os registros, resolvi criando uma consulta e baseando o relatório nela

    coloquei o seguinte código na propriedade ao clicar de um botão ou imagem do meu formulário

    Código:
    On Error GoTo Erro

    Dim Destinatario    As String
    Dim objMail As New jmail.Message, vSMTP As String

    vSMTP = "smtp.seudominio.com.br" 'Servidor SMTP
    Destinatario = Me!email

    DoCmd.OpenReport "qryvendas", acViewPreview, , "[numero]=" & "'" & Me![numero] & "'", acHidden

    DoCmd.OutputTo acOutputReport, "qryvendas", acFormatPDF, "C:\Relatorio.pdf"

    DoCmd.Close acReport, "qryvendas"


    objMail.From = "seuemail@dominio.com"
    objMail.FromName = "Seu nome"
    objMail.AddRecipient Destinatario
    objMail.MailServerUserName = "seu login"
    objMail.MailServerPassWord = "sua senha"

    objMail.Subject = "Seu pedido"
    objMail.Body = "Prezado(a) Cliente,!" & vbCrLf & _
    "Você está recebendo a cópia de seu pedido em anexo em pdf, guarde-a ou imprima para futuras consultas."

    objMail.AddAttachment "C:\Relatorio.pdf", True

    If objMail.Send(vSMTP) Then
    MsgBox "E-mail enviado com sucesso!", vbInformation + vbOKOnly, "E-mail enviado"
    Else
    MsgBox "Ocorreu um erro ao enviar o e-mail." & vbCrLf & objMail.Log, vbCritical + vbOKOnly, "Erro"
    End If

    Set objMail = Nothing

    Sair:
    Exit Sub
    Erro:
    MsgBox Err.Description & vbCrLf & objMail.Log, vbCritical + vbOKOnly, "Erro " & Err.Number & " no envio do e-mail"
    Resume Sair


    Também usei o código do Avelino : Veja clicando aqui e também funcionou perfeitamente

    tfpassos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/08/2014

    ENVIAR RELATORIOS POR EMAIL PARA DESTINATÁRIOS DO CAMPO EMAIL

    Mensagem  tfpassos em Seg 11 Ago 2014, 00:57


    Pessoal,

    Sou novo aqui e principiante em access. Preciso que ao clickar no botão de comando ele envie relatoios em PDF pelo outlook para destinatario do campo email. tetei o código abaixo e deu erro em tempo de execução 5 argumento ou chamada de procedimento inválido inválido. If Me.Dirty Then o que pode estar errado. Este é um codigo do Avelino que pesquisei

    rivate Sub Comando24_Click()
    Dim strArquivo As String
    Dim strLocal As String
    Dim stDocName As String
    Dim str_criterio As String
    Dim objOut As Object
    Dim objmail As Object
    Dim objAnexo As Object
    Const olMailItem = 0
    Const olByValue = 1

    If IsNull(Me!EMAIL) Then Exit Sub
    Set objOut = CreateObject("Outlook.application")
    Set objmail = objOut.CreateItem(olMailItem)
    Set objAnexo = objmail.Attachments
    stDocName = "RELATORIO ESTRUTURA"
    str_criterio = "[COD AGENCIA]=" & Me![EMAIL]
    DoCmd.OpenReport stDocName, acViewPreview, , , acHidden, str_criterio
    strArquivo = "C:\Relatorio.pdf"
    strLocal = "C:\Relatorio.pdf"
    If Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
    DoCmd.OutputTo acOutputReport, "RELATORIO ESTRUTURA", acFormatPDF, "C:\Relatorio.pdf"
    DoCmd.Close acReport, "RELATORIO ESTRUTURA"
    objAnexo.Add strLocal, olByValue, 1
    objmail.Display
    Set objAnexo = Nothing
    Set objmail = Nothing
    Set objOut = Nothing

    End Sub

      Data/hora atual: Dom 04 Dez 2016, 14:11