Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador activeX. Mostrar todas as postagens
Mostrando postagens com marcador activeX. Mostrar todas as postagens

MS Access | Aplicando Função Concatenação de Valores nos Campos das Consultas

MS Access | Aplicando Função Concatenação de Valores nos Campos das Consultas


No desenvolvimento de soluções VBA para bancos de dados, frequentemente há a necessidade de agrupar informações de diferentes registros em uma única linha. Isso é particularmente útil quando se deseja exibir múltiplos valores relacionados a uma chave primária de forma concatenada, como listar todos os membros de uma família em uma só célula de uma consulta. A função ConcatenateFieldValues permite exatamente isso.


 Aprenda: 17 Passos Essenciais para Melhorar seu Código VBA 


Essa função tem como base uma consulta SQL (Structured Query Language) que seleciona os valores de um campo específico. O código percorre todos os registros retornados e concatena os valores, separando-os por um delimitador definido pelo usuário — que, por padrão, é uma vírgula. Isso torna o uso da função flexível e aplicável a diversas situações em que diferentes separadores podem ser exigidos, como ponto-e-vírgula ou até mesmo uma quebra de linha.


Public Function ConcatenateFieldValues(pstrSQL As String, _

      Optional pstrDelim As String = ", ") As String


' Criado por Duane Hookom, 2003

' Este código pode ser incluído em qualquer aplicação, desde que

'      esta declaração seja mantida.

'

' Exemplo de uso:

'      tblFamily com FamID como chave primária numérica

'      tblFamMem com FamID, FirstName, DOB,...

' Retorna uma lista separada por vírgulas de FirstNames para um FamID

'                  Exemplo: John, Mary, Susan

' Em uma consulta:

'      SELECT FamID,

'      ConcatenateFieldValues("SELECT FirstName

'      FROM tblFamMem WHERE FamID =" & [FamID]) AS FirstNames

'      FROM tblFamily;

' ---------------------

' Modificado por Ken Snell 29 October 2005

'

' *** ESTA FUNÇÃO CONSTRÓI UMA STRING CONCATENADA QUE CONTÉM OS

' *** VALORES DE UM CAMPO PARA CADA REGISTRO EM UMA TABELA OU

' *** CONSULTA, SEPARADOS POR UM DELIMITADOR ESPECIFICADO.


Dim strConcat As String ' String que armazenará os valores concatenados


' Comentário sobre o uso de DAO

Dim db As DAO.Database

Dim rs As DAO.Recordset ' Objeto Recordset que será utilizado para armazenar os resultados da consulta


On Error Resume Next ' Ignora erros


strConcat = "" ' Inicializa a string concatenada


' Abre o banco de dados atual e executa a consulta passada como parâmetro (pstrSQL)

Set db = CurrentDb

Set rs = db.OpenRecordset(pstrSQL)


' Verifica se o Recordset não está vazio e processa os resultados

With rs

      If Not .EOF Then ' Se não estiver no final do Recordset

            .MoveFirst ' Move para o primeiro registro

            Do While Not .EOF ' Continua até o final dos registros

                  strConcat = strConcat & .Fields(0) & pstrDelim ' Concatena o valor do campo com o delimitador

                  .MoveNext ' Move para o próximo registro

            Loop

      End If

      .Close ' Fecha o Recordset

End With


Set rs = Nothing ' Libera a memória utilizada pelo Recordset


db.Close ' Fecha a conexão com o banco de dados

Set db = Nothing ' Libera a memória utilizada pelo objeto Database


' Remove o último delimitador da string concatenada

If Len(strConcat) > 0 Then strConcat = _

      Left(strConcat, Len(strConcat) - Len(pstrDelim))


' Retorna a string concatenada final

ConcatenateFieldValues = strConcat


Exit Function

End Function



Um dos grandes diferenciais desta função é sua aplicabilidade em consultas dentro do Microsoft Access. Um exemplo clássico seria uma tabela que armazena os nomes de membros de uma família, vinculada a outra tabela que armazena as informações da própria família. Utilizando a função ConcatenateFieldValues, é possível gerar uma consulta que retorne os nomes dos membros separados por vírgulas, tudo em um só campo, para cada família.


 Que tal aprender estes códigos também: 


A função também é extremamente eficiente, aproveitando o mecanismo de objetos DAO (Data Access Objects) para trabalhar diretamente com os registros no banco de dados. Além disso, a função foi projetada para que possa ser facilmente modificada para trabalhar com ADO (ActiveX Data Objects), caso o desenvolvedor precise acessar dados de fontes externas ao Access. Essa flexibilidade permite que a função seja aplicada em diferentes contextos, desde bancos de dados locais até conexões remotas.


Outro ponto importante é o tratamento de erros. Embora o código original utilize a instrução On Error Resume Next, que ignora erros, é recomendável adicionar um tratamento de erros mais robusto em ambientes críticos. Isso ajudaria a capturar possíveis falhas de execução, como consultas malformadas ou falta de conexão com o banco de dados, proporcionando mais segurança e controle sobre o comportamento do aplicativo.


Em suma, a função ConcatenateFieldValues resolve um problema comum em bancos de dados relacionais e é uma excelente ferramenta para gerar relatórios dinâmicos. Sua flexibilidade, eficiência e simplicidade a tornam uma função valiosa para desenvolvedores que buscam agregar dados de forma elegante e intuitiva, sem a necessidade de recorrer a técnicas mais complexas de programação.


  Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série Donut Project 
DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 Clique nas capas abaixo e compre também: 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)


Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel (Série Top 10 Funções - Microsoft Excel)


eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes

PIECE OF CAKE - Excel - Manipule o Google Maps em sua Planilha - Put a Google Map in your Spreadsheet


Pensei em mostrar como incorporar um mapa em uma planilha. É simples e super funcional, envolvendo apenas três passos principais.


1) Insira o objeto de navegador web
Este é o primeiro passo realmente simples. Vá até a guia Desenvolvedor e clique no ícone “Mais controles” (aquele com o martelo cruzado com uma chave de fendas). Selecione o Web Browser Microsoft a partir da lista de controles ActiveX, e em seguida, arraste para a posição na planilha onde deseja colocar o objeto.




2) Gerar a URL que mostrará seu mapa
Essa é a 
forma mais fácil de mostrar um marcador no mapa. O formato para a URL é o seguinte:
http://maps.google.co.uk/maps?q=your_postcode_goes _here&output=embed&iwloc=near

Uma vez que o seu mapa apareça, você está liberado para uma página normal do Google Maps, dê um Zoom in e alterne entre os modos do mapa. Conseguirá ir para o Street View ou o Google Earth

Existem uma série de outros parâmetros que podem ser adicionados para melhorar os resultados. E encontrará mais informações fuçando um pouco mais. Verá coisas como ajustar o nível de zoom, mostrar mapas híbridos e assim por diante.

A limitação dessa abordagem só lhe permite mostrar um marcador. Se quiser mostrar mais de um, poderá exibir um mapa estático, ao custo de não ser capaz de interagir com ele. A API para isso é bastante simples. O formato básico da URL é o seguinte:

http://maps.google.com/maps/api/staticmap?¢er=your_location&zoom=19&size=525x330&maptype=roadmap&
markers=color:red|label:A|your_latitude,your_longitude&markers=color:green|label:B|your_latitude,your_longitude&sensor=false



Mais uma vez, terá liberdade para implementar alterações se incluir substituições como trocar roadmap por satelliteou hybrid.


3) Adicione o código VBA para navegar pelo URL
Talvez esta seja a parte mais complicada se não estiver familiarizado com o VBA, mas na verdade, também é muito simples. Adicionar um link para uma página web, com um mapa do Google pode realmente ser um grande diferencial na aparência de sua planilha.

Existem 2 partes do código: Uma Sub para o objeto de controle e uma Function para executar o ping no Google, verificando se existe uma conexão ativa, pois não há nada pior do que mostrar um lindo Dashboard para um cliente, e só então perceber que um erro de falta de conexão. Ao verificar o link primeiro, poderá ocultar o navegador web, mostrando uma imagem que indique a falta de conexão e esconda o erro do navegador.

Deixe seus comentários, compartilhe este artigo!


⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 

⬛◼◾▪ CONTATO ▪

VBA Excel - Enviando emails via VBA - Send Email Using VBA


Um dos meios mais fáceis de automatizar o envio de e-mails através do MS Excel é invocar a função ObjectOutlook.Application.

Esta função devolve a referência ao objeto ActiveX, neste caso a aplicação Outlook, o qual é utilizado para a criação e o envio do  e-mail.

Copie e cole o código abaixo para que isso aconteça:

Sub EnvieMailVBA()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Bcc, Email_Body As String

Dim Mail_Object, Mail_Single As Variant

Let Email_Subject = "A&A: Enviando e-mail com VBA"
Let Email_Send_From = "<Digite o seu e-mail aqui>"
Let Email_Send_To = "<Digite o email para quem enviará>"
Let Email_Cc = "<Digite a pessoa para quem enviará a cópia deste email >"
Let Email_Bcc = "<Digite o email para quem enviará uma cópia oculta>"
Let Email_Body = "Parabéns!!!! O seu envio ocorreu com sucesso !!!!"

On Error GoTo debugs

Set Mail_Object = CreateObject("Outlook.Application")
Set Mail_Single = Mail_Object.CreateItem(0)

With Mail_Single
Let .Subject = Email_Subject
Let .To = Email_Send_To
Let .cc = Email_Cc
Let .BCC = "bernardess@gmail.com" 'Email_Bcc
Let .Body = Email_Body

.send
End With

debugs:
If Err.Description <> "" Then MsgBox Err.Description
End Sub


Como um lembrete: Quando enviar um e-mail usando este código VBA, uma janela pop-up alertando os usuários de que o "Um programa está tentando enviar automaticamente um email em seu nome. Você quer permitir isso? " aparece. 

Este é um aviso de segurança válido e não há nenhum trabalho direto ao redor dele. No entanto, existem outros dois meios pelos quais essa tarefa pode ser executada, uma através do uso de CDO e outro que simula a utilização do teclado.




Deixe os seus comentários! Envie este artigo, divulgue este link na sua rede social...





Tags: VBA, Excel, e-mail, email, mail, send, objectoutlook.application, activeX


diHITT - Notícias