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

    loop para envio de e-mail

    Compartilhe

    cakanilo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 09/04/2011

    loop para envio de e-mail

    Mensagem  cakanilo em Sex 20 Jun 2014, 15:29

    Bom dia pessoal,


    estou tentando enviar e-mail pelo access onde o código analisa uma consulta que mostra a informação em um campo SIM/NÃO se o servidor já entregou o registro de frequência, exemplo:


    OBS: Esse código funciona perfeitamente em outro projeto não consigo identificar o problema, pois configurei as mesmas preferências.


    Freq_Jun = 0 não entregou entra no loop e envia o e-mail, se for igual a 1 não envia o e-mail de cobrança.


    eis o código que está dando o erro: erro de definição de aplicativo ou de definição de objeto.



    'Tratamento de erro
    On Error GoTo ErrHandle


    Dim objOutlookMsg As Outlook.MailItem
    Dim RsEmails As DAO.Recordset
    Dim Q As String
    Dim vardata As String
    Dim Mes As String
    Dim VarMes As String
    Dim Ano As String


    'Define a quebra de linha
    Q = Chr(13) & Chr(10)

    Mes = Me.Mes '- campo em um formulário que pega o mês atual ex: 6
    Ano = Me.Ano '- campo em um formulário que pega o ano atual ex: 2014


    Select Case Me.Mes
    Case 1
    VarMes = "Freq_Jan"
    Case 2
    VarMes = "Freq_Fev"
    Case 3
    VarMes = "Freq_Mar"
    Case 4
    VarMes = "Freq_Abr"
    Case 5
    VarMes = "Freq_Mai"
    Case 6
    VarMes = "Freq_Jun"
    Case 7
    VarMes = "Freq_Jul"
    Case 8
    VarMes = "Freq_Ago"
    Case 9
    VarMes = "Freq_Set"
    Case 10
    VarMes = "Freq_Out"
    Case 11
    VarMes = "Freq_Nov"
    Case 12
    VarMes = "Freq_Dez"
    End Select


    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")

    'Inicia o Outlook
    Call InitializeOutlook

    'Laço para ir de registro em registro, enviando um email para todos os destinatários da consulta
    While Not RsEmails.EOF

    If RsEmails.Fields("Freq_Jun") = 0 Then

    'If VarMesC = 0 Then

    'Cria um novo objeto de email
    Set objNewMail = gOLApp.CreateItem(olMailItem)

    'Define as propriedades de envio do email
    With objNewMail


    'Define o destinatário
    .To = RsEmails.Fields("Email")

    'Define o corpo do email
    .Body = "Prezado(a) Servidor(a)," & Q & "" & _
    Q & " Informamos que até o momento não acusamos o recebimento da sua folha de frequência do mês de " & MesAno & "/" & Ano & ".Favor regularizar a situação imediatamente, considerando que a percepção da remuneração está condicionada à comprovação do cumprimento da devida jornada de trabalho." & _
    Q & " O registro de frequência é condição básica para o pagamento da bolsa de estágio, bem como os benefícios que são processados mensalmente, por intermédio do Sistema Integrado de Administração de Recursos Humanos - SIAPE." & _
    Q & " Ressaltamos que, conforme disposto no art. 8º do Decreto nº 1.590, de 10 de agosto de 1995, que trata da jornada de trabalho dos servidores da Administração Pública Federal direta, das autarquias e das fundações públicas federais, utilizado por extensão aos contratados de forma temporária, que A frequência do mês deverá ser encaminhada às unidades de recursos humanos do respectivo órgão ou entidade até o quinto dia útil dos mês subsequente, contendo as informações das ocorrências verificadas. " & _
    Q & " Atenciosamente," & Q & "" & Q & " Coordenação de Desenvolvimento de Pessoas " & Q & " Coordenação-Geral de Gestão de Pessoas " & Q & " Subsecretaria de Planejamento, Orçamento e Administração " & Q & " Secretaria-Executiva " & Q & " Ministério da Cultura"

    'Título do email
    .Subject = "Registro de Frequência Servidor do Mês de"

    'Envia o email
    .Send

    End With

    'Tira o objeto da memória
    Set objNewMail = Nothing

    Else
    End If
    'Move para o próximo email
    RsEmails.MoveNext
    Wend

    'Tira o recordset da memória
    Set RsEmails = Nothing

    ErrHandle:


    'Caso ocorra um erro

    If Err.Number <> 0 Then
    MsgBox Err.Description, vbInformation, "Erro número: " & Err.Number
    End If


    End Sub

    cakanilo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 09/04/2011

    Re: loop para envio de e-mail

    Mensagem  cakanilo em Sex 20 Jun 2014, 21:00

    Consegui resolver o problema do envio.

    agora eu tenho uma campo no forme que me traz o mês atual ex: mes = 6 eu criei o select case para pegar o mês atual dai ele faze o record set na consulta de acordo com o mês atual, pois existe os meses de janeiro a dezembro na consulta, ambos trazendo a informação se a folha foi entregue = -1 e não = 0

    como eu conseguiria colocar o loop para funcionar nesse caso:
    'Tratamento de erro
    On Error GoTo ErrHandle


    Dim objOutlookMsg As Outlook.MailItem
    Dim RsEmails As DAO.Recordset
    Dim Q As String
    Dim Mes As String
    Dim VarMes As Integer
    Dim Ano As String


    'Define a quebra de linha
    Q = Chr(13) & Chr(10)

    Mes = Me.Mes
    Ano = Me.Ano

    Select Case Me.Mes
    Case 1
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Jan")
    Case 2
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Fev")
    Case 3
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Mar")
    Case 4
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Abr")
    Case 5
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Mai")
    Case 6
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Jun")
    Case 7
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Jul")
    Case 8
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Ago")
    Case 9
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Set")
    Case 10
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Out")
    Case 11
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Nov")
    Case 12
    'Abre um recordset
    Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequencia")
    VarMes = RsEmails.Fields("Freq_Dez")

    End Select

    'Inicia o Outlook
    Call InitializeOutlook

    'Laço para ir de registro em registro, enviando um email para todos os destinatários da consulta
    While Not RsEmails.EOF

    If VarMes = 0 Then

    'Cria um novo objeto de email
    Set objNewMail = gOLApp.CreateItem(olMailItem)

    'Define as propriedades de envio do email
    With objNewMail


    'Define o destinatário
    .To = RsEmails.Fields("Email")

    'Define o corpo do email
    .Body = "Prezado(a) Servidor(a)," & Q & "" & _
    Q & " Informamos que até o momento não acusamos o recebimento da sua folha de frequência do mês de " & Mes & "/" & Ano & ".Favor regularizar a situação imediatamente, considerando que a percepção da remuneração está condicionada à comprovação do cumprimento da devida jornada de trabalho." & _
    Q & " O registro de frequência é condição básica para o pagamento da bolsa de estágio, bem como os benefícios que são processados mensalmente, por intermédio do Sistema Integrado de Administração de Recursos Humanos - SIAPE." & _
    Q & " Ressaltamos que, conforme disposto no art. 8º do Decreto nº 1.590, de 10 de agosto de 1995, que trata da jornada de trabalho dos servidores da Administração Pública Federal direta, das autarquias e das fundações públicas federais, utilizado por extensão aos contratados de forma temporária, que A frequência do mês deverá ser encaminhada às unidades de recursos humanos do respectivo órgão ou entidade até o quinto dia útil dos mês subsequente, contendo as informações das ocorrências verificadas. " & _
    Q & " Atenciosamente," & Q & "" & Q & " Coordenação de Desenvolvimento de Pessoas " & Q & " Coordenação-Geral de Gestão de Pessoas " & Q & " Subsecretaria de Planejamento, Orçamento e Administração " & Q & " Secretaria-Executiva " & Q & " Ministério da Cultura"

    'Título do email
    .Subject = "Registro de Frequência Servidor do Mês de"

    'Envia o email
    .Send

    End With

    'Tira o objeto da memória
    Set objNewMail = Nothing

    Else
    End If
    'Move para o próximo email
    RsEmails.MoveNext

    Wend

    'Tira o recordset da memória
    Set RsEmails = Nothing

    Me.TimerInterval = 0

    ErrHandle:


    'Caso ocorra um erro

    If Err.Number <> 0 Then
    MsgBox Err.Description, vbInformation, "Erro número: " & Err.Number
    End If

      Data/hora atual: Sab 03 Dez 2016, 15:39