Exibindo a Idade - Idade + Meses Consulta Grid --- #FICAADICA #ficadica

Faz algum tem que precisei exibir a idade dos aniversariantes do mês em uma consulta.

De certa maneira demorei um pouco ate chegar a esse objetivo, obviamente não sei se essa é a melhor maneira mas está funcionando.

Criei um campo na tabela de cliente preenchido por Default com a palavra “anos” e fiz o seguinte select dentro do “Lookup de Consulta”
“Comando Select” de um campo previamente criado na aplicação chamado “idade”.

SELECT
YEAR(CURRENT_DATE) - YEAR(data_nascimento_cliente) - (DATE_FORMAT(CURRENT_DATE, '%m%d') < DATE_FORMAT(data_nascimento_cliente, '%m%d'))AS idade, anos
FROM
`tabela_cadastro_clientes`
WHERE 
id_cliente ='{id_cliente}'

Nesse caso a tabela cliente não era muito grande, então esse campo anos preenchido automaticamente não impactou em nada.

================================
Em outra grid precisei exibir anos e meses de vida.

Aqui fiz diferente criei uma tabela no banco de dados com 3 campos: id_config, anos, meses (na verdade a tabela já existia para algumas outras configurações do sistema) mas para facilitar o exemplo populei com os seguintes dados:
id_config=1
anos = anos e
meses = meses

Do mesmo modo foi criando um campo na aplicação para exibir a idade onde fiz o seguinte select dentro do “Lookup de Consulta”
“Comando Select”.

SELECT
   YEAR(CURRENT_DATE) - YEAR(tabela_cadastro_clientes.data_nascimento_cliente) - (DATE_FORMAT(CURRENT_DATE, '%m%d') 
   < DATE_FORMAT(tabela_cadastro_clientes.data_nascimento_cliente, '%m%d'))AS idade, tabela_config_idade.anos,
   TIMESTAMPDIFF(MONTH, tabela_cadastro_clientes.data_nascimento_cliente + INTERVAL 
   TIMESTAMPDIFF(YEAR,  tabela_cadastro_clientes.data_nascimento_cliente, CURRENT_DATE) YEAR , CURRENT_DATE)AS meses, tabela_config_idade.meses
   
FROM
   tabela_cadastro_clientes,
   tabela_config_idade
   WHERE 
tabela_cadastro_clientes.id_cliente =  '{id_cliente}' AND tabela_config_idade.id_idade=1

Na imagem anexa mostro o resultado dos campos de exibição da idade ainda com a formatação original do Scriptcase.

BOM; Se você tiver uma maneira melhor para fazer deixe sua sugestão, espero estar ajudando alguém.

É certo que a forma que descrevi acima funcionou legal, mas no primeiro caso tive que adicionar um campo na tabela de cadastro de clientes e na segunda tive que criar uma tabela adicional, pensando em uma solução melhor vi que nada do que foi feito seria necessário para o mesmo resultado.
Veja nas imagens abaixo a correção simplificada.

– “destaque em vermelho e amarelo para as informações adicionadas” –

Noel,

Legal tua idéia. Funciona sem problemas. Obrigado por compartilhar.

Sim é desse jeito mesmo e apos o cálculo de cada campo colocar ‘AS’ Campo. ‘AS é aliases do BD’.
http://www.w3schools.com/sql/sql_alias.asp

Realmente esqueci de colocar o AS na hora de transcrever, embora para uso no SC seja irrelevante (eu acho), fiz uma pequena correção colocando “AS idade e AS meses”.

Valeu!..