Consulta Juntando as Iniciais

Aqui vai uma função legal. As vezes precisamos unir as iniciais dos nome de alguém, por algum motivo, e aí vem a pergunta. Como fazer isso? uma coisa simples mas que na maioria das vezes não paramos para pensar nas pociveis soluções. Por isso iremos mostrar 2 (dois) exemplos:

1º Quando Nome e Sobrenome estão em colunas separada:

Para iniciar o teste criaremos uma tabela com o nome "tbl_cliente", com os seguintes campos: ID_cliente, Nome_cliente, e Sobre_nome.Como na figura abaixo:


 Em seguinda iremos criar uma consulta com o nome de "qry_iniciais", onde adicionaremos todos os campos da tabela nas colunas da consulta.Como na figura abaixo:


Agora na quarta coluna, colocaremos a função para nos retornar as iniciais. Digite a seguinte função: Esquerda(Nome_cliente;1)+Esquerda(sobrenome_cliente;1). O que estamos dizendo com esta função? Estamos falando para o access que, queremos pegar a primeira letra de cada coluna. Estamos dando as colunas, a quantidade de letras que o access vai pegar, e dizendo que vai ser da esquerda para a direita, como os nomes estão em colunas separadas, nos só usamos a função Esquerda.


E esta função nos restorna as iniciais como visto abaixo:



2º Quando Nome e Sobrenome estão na mesma coluna.
Então meus amores... Agora vamos criar outra tabela com o nome "tbl_iniciais", onde, vamso adicionar 2 campos, o primeiro vai ser ID_iniciais, e o segundo vai ser Nome_iniciais (colocaremos o nome e o sobrenome juntos na mesma coluna). Para fazermos o teste vamos utilizar como registro os nomes: Leyla Carolyne e Leandro Felix.


Agora vamos criar uma consulta para poder separar as iniciais. Vamos chamar a nossa consulta de "qry_iniciais2" e adicionaremos todos os campos da tabela nas colunas da consulta. Na ultima coluna após os campos adicionados é onde colocaremos a nossa nova função:

iniciais:Esquerda([nome_iniciais];1)+Meio([nome_iniciais];Emseq(1;nome_iniciais;" ")+1;1).

Que ao executar nos dará como resultado as iniciais dos nomes como desejado:



O que estamaos fazendo com esta função? Usando a função esquerda, pegamos a primeira letra do nome, a função meio só esta ali para direcionarmos o access para o meio do nome, e com a função emseq estamos dizendo que o meio é um espaço, como queremos pegar a primeira inicial do segundo nome e não o espaço nos colocamos "+1" no final da função, que quer dizer que queremos pular o espaço e pegar a proxima letra, e por ultimo pra terminar a função colocamos o numero"1" que é a quantidade de caracteres que queremos pegar depois do espaço.

Primeiro exemplo em SQL:

SELECT tbl_cliente.ID_cliente, tbl_cliente.Nome_cliente, tbl_cliente.Sobrenome_cliente, Left([nome_cliente],1)+Left([sobrenome_cliente],1) AS Expr1
FROM tbl_cliente;

Segundo exemplo em SQL:

SELECT tbl_iniciais.ID_Iniciais, tbl_iniciais.Nome_iniciais, Left([nome_iniciais],1)+Mid([nome_iniciais],InStr(1,[nome_iniciais]," ")+1,1) AS Expr1
FROM tbl_iniciais;

Abraço enorme para todos e espero ter ajudado!

2 comentários:

  1. Bravo! Bravo! se eu tivesse visto isso alguns meses antes da olimpiada tinha me poupado uma imensa dor de cabeça!!!

    ResponderExcluir
  2. Boa noite!
    Amigo, como ficaria a função para três ou mais nomes?

    ResponderExcluir