MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    avatar
    leoavila
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 09/11/2012

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  leoavila 10/11/2012, 00:16

    Vi este topico no qual voces ajudaram um cara com a questão da concatenação:
    http://maximoaccess.forumeiros.com/t2779-resolvidoconcatenar-todos-os-registros-de-uma-consulta-em-uma-unica-variavel-vba
    e gostaria de saber como poderia altera-lo para que a concatenção ocorra em um formulario tabular filtrado ao gosto do usuario.
    No meu caso eu colocaria uma caixa de texto que exibiria as concatenações no rodapé do formulario. Poderiam me ajudar?

    Obrigado

    Leonardo de Avila
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Re: [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  criquio 10/11/2012, 11:05

    Olá, seja bem vindo ao fórum!

    Dê uma olhada aqui.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    leoavila
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 09/11/2012

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  leoavila 10/11/2012, 13:07

    Não é bem o que preciso, agradeço pela força...Deixa eu tentar explicar melhor:
    Tenho uma tabela de eleitores, e com um campo em especial que quero concatenar (Email). Consegui um codigo na net que envia e-mails, buscando os endereços direto da tabela, pelo Outlook. O fato é que ele manda 1 por 1 dos e-mail, o que fica inviavel se eu tiver por exemplo 300 endereços. Minha ideia é criar um campo de concatenação desse campo e-mail, separado por ponto e virgula pra que eu possa em seguida rodar o codigo de envio de e-mail e ele coloque no campo To ou CC do Outlook todos os e-mails devidamente concatenados. Minha dificuldade é que eu quero que a concatenação aconteça apos aplicar filtro no formulario tabular que criei (nao é sub form), podendo assim segmentar os e-mails por genero, bairro, cidade. Tenho certeza q a solução é simples, o fato é que sou iniciante e tenho que recorrer aos colegas do forum pra clarear o meu raciocinio. Obrigado pela ajuda.

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Re: [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  criquio 10/11/2012, 13:15

    Detalhe melhor o que está fazendo. Poste o código que está utilizando e fale sobre os filtros aplicados ao mesmo.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    leoavila
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 09/11/2012

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  leoavila 10/11/2012, 13:31

    Este é o codigo que estou usando para enviar e-mails a partir de meu banco de dados. Ele tem funcionado bem, o problema é que ele busca os endereços na tabela e não no formulario, alem disso, não consigo filtrar os dados, e ele envia todos os registros, e o pior 1 por 1. Se eu tiver 300 registros, ele enviará 300 e-mails. Por isso pensei na concatenação, pois apontaria para o campo com os registros concatenados e preencheria um unico recipiente do Outlook. Outro problema que gostaria que me ajudassem com esse codigo é que ele buscasse as informações no formulario e nao na tabela, para poder aplicar o filtro. Obrigado amigos...

    [Option Compare Database
    Option Explicit

    Private Sub Comando31_Click()
    'Sub SendMessages(Optional AttachmentPath)

    Dim MyDB As Database
    Dim MyRS As Recordset
    Dim objOutlook As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Outlook.Recipient
    Dim objOutlookAttach As Outlook.Attachment
    Dim TheAddress As String

    Set MyDB = CurrentDb
    Set MyRS = MyDB.OpenRecordset("Eleitorado Consulta")
    MyRS.MoveFirst

    ' Create the Outlook session.
    Set objOutlook = CreateObject("Outlook.Application")

    Do Until MyRS.EOF
    ' Create the e-mail message.
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    TheAddress = MyRS![Email]

    With objOutlookMsg
    ' Add the CCo recipients to the e-mail message.
    Set objOutlookRecip = .Recipients.Add(TheAddress)
    objOutlookRecip.Type = olTo

    ' Add the Cc recipients to the e-mail message.
    If (IsNull(Forms!Email!Email)) Then
    ' Else
    ' Set objOutlookRecip = .Recipients.Add(Forms!Email!Email)
    ' objOutlookRecip.Type = olCC
    End If

    ' Set the Subject, the Body, and the Importance of the e-mail message.
    '.Subject = Forms!EMail!Subject
    '.Body = Forms!frmMail!MainText
    '.Importance = olImportanceHigh 'High importance

    'Add the attachment to the e-mail message.
    ' If Not IsMissing(AttachmentPath) Then
    ' Set objOutlookAttach = .Attachments.Add(AttachmentPath)
    ' End If

    ' Resolve the name of each Recipient.
    For Each objOutlookRecip In .Recipients
    objOutlookRecip.Resolve
    If Not objOutlookRecip.Resolve Then
    objOutlookMsg.Display
    End If
    Next
    .Display
    End With
    MyRS.MoveNext
    Loop
    Set objOutlookMsg = Nothing
    Set objOutlook = Nothing
    End Sub]
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Re: [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  criquio 10/11/2012, 13:56

    Deixe apenas a coleta do email dentro do loop:

    Código:
    ...
    TheAddress = ""

    Do Until MyRS.EOF
        If TheAddress = "" Then
            TheAddress = MyRS![Email]
        Else
            TheAddress = TheAddress & ";" & MyRS![Email]
        End If
        MyRS.MoveNext
    Loop
    ...
    Quanto à fonte, pode deixar na tabela mesmo. Os registros do formulário são exibidos na totalidade ou apenas alguns registros caso ele seja filtrado. Portanto, se o formulário for filtrado para exibir apenas alguns registros, basta passar esse filtro na hora de declarar o Recordset.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    leoavila
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 09/11/2012

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  leoavila 10/11/2012, 14:42

    vou fazer o teste
    avatar
    leoavila
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 09/11/2012

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  leoavila 10/11/2012, 15:48

    nada criquio...onde posso ter errado?



    [Private Sub Comando31_Click()
    'Sub SendMessages(Optional AttachmentPath)

    Dim MyDB As Database
    Dim MyRS As Recordset
    Dim objOutlook As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Outlook.Recipient
    Dim objOutlookAttach As Outlook.Attachment
    Dim TheAddress As String

    Set MyDB = CurrentDb
    Set MyRS = MyDB.OpenRecordset("Eleitorado Consulta")
    MyRS.MoveFirst

    ' Create the Outlook session.
    Set objOutlook = CreateObject("Outlook.Application")

    Do Until MyRS.EOF
    ' Create the e-mail message.
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    TheAddress = MyRS![Email]
    If TheAddress = "" Then
    TheAddress = MyRS![Email]
    Else
    TheAddress = TheAddress & ";" & MyRS![Email]
    End If
    MyRS.MoveNext
    Loop

    End Sub
    ]
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Re: [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  criquio 10/11/2012, 16:22

    Coloque apenas a parte que concatena os emails dentro do loop conforme eu postei:

    Código:
    Private Sub Comando31_Click()
    'Sub SendMessages(Optional AttachmentPath)

    Dim MyDB As Database
    Dim MyRS As Recordset
    Dim objOutlook As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Outlook.Recipient
    Dim objOutlookAttach As Outlook.Attachment
    Dim TheAddress As String

    Set MyDB = CurrentDb
    Set MyRS = MyDB.OpenRecordset("Eleitorado Consulta")

    ' Create the Outlook session.
    Set objOutlook = CreateObject("Outlook.Application")

    ' Create the e-mail message.
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    TheAddress = ""

    Do Until MyRS.EOF
        If TheAddress = "" Then
            TheAddress = MyRS![Email]
        Else
            TheAddress = TheAddress & ";" & MyRS![Email]
        End If
        MyRS.MoveNext
    Loop

    With objOutlookMsg
    ' Add the CCo recipients to the e-mail message.
    Set objOutlookRecip = .Recipients.Add(TheAddress)
    objOutlookRecip.Type = olTo

    ' Add the Cc recipients to the e-mail message.
    If (IsNull(Forms!Email!Email)) Then
    ' Else
    ' Set objOutlookRecip = .Recipients.Add(Forms!Email!Email)
    ' objOutlookRecip.Type = olCC
    End If

    ' Set the Subject, the Body, and the Importance of the e-mail message.
    '.Subject = Forms!EMail!Subject
    '.Body = Forms!frmMail!MainText
    '.Importance = olImportanceHigh 'High importance

    'Add the attachment to the e-mail message.
    ' If Not IsMissing(AttachmentPath) Then
    ' Set objOutlookAttach = .Attachments.Add(AttachmentPath)
    ' End If

    ' Resolve the name of each Recipient.
    For Each objOutlookRecip In .Recipients
    objOutlookRecip.Resolve
    If Not objOutlookRecip.Resolve Then
    objOutlookMsg.Display
    End If
    Next
    .Display
    End With

    Set objOutlookMsg = Nothing
    Set objOutlook = Nothing
    End Sub


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    leoavila
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 09/11/2012

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Re: [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  leoavila 10/11/2012, 16:34

    Ficou otimo Criquio, so nao consegui aplicar os filtros...Se nao for te pedir demais, pode me ajudar com isso cara? Agradeço demais seu apoio...
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Re: [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  criquio 10/11/2012, 17:16

    Qual é o filtro que deseja aplicar? Em resumo, o filtro seria algo assim:

    Código:
    Set MyRS = MyDB.OpenRecordset("SELECT * FROM Eleitorado Consulta WHERE NomeDoCampo='" & Filtro & "'")
    Eu lhe aconselho a renomear a tabela, retirando o espaço entre os nomes. Veja o porque aqui.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    leoavila
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 09/11/2012

    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  leoavila 10/11/2012, 17:36

    Show de bola, vc me salvou, obrigado demais... Very Happy

    Conteúdo patrocinado


    [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2 Empty Re: [Resolvido]Concatenar todos os registros de uma consulta em uma unica variável VBA - parte 2

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 23:52