Autor Tópico: Exibindo a Idade - Idade + Meses Consulta Grid --- #FICAADICA #ficadica  (Lida 735 vezes)

noelreis

  • Novato
  • *
  • Mensagens: 35
  • CUIDADO APRENDIZ...
    • Email
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".

Código: [Selecionar]
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".

Código: [Selecionar]
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" --


« Última modificação: Maio 21, 2016, 06:24:56 pm por noelreis »
Programadores são ferramentas para converter cafeína em código.

Kleyber

  • Expert
  • *****
  • Mensagens: 2237
    • Email
Re:Exibindo a Idade - Idade + Meses Consulta Grid --- #FICAADICA #ficadica
« Responder #1 Online: Maio 21, 2016, 11:41:39 am »
Noel,

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

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

Jailton

  • Expert
  • *****
  • Mensagens: 2038
Re:Exibindo a Idade - Idade + Meses Consulta Grid --- #FICAADICA #ficadica
« Responder #2 Online: Maio 21, 2016, 01:30:46 pm »
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
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

noelreis

  • Novato
  • *
  • Mensagens: 35
  • CUIDADO APRENDIZ...
    • Email
Re:Exibindo a Idade - Idade + Meses Consulta Grid --- #FICAADICA #ficadica
« Responder #3 Online: Maio 21, 2016, 05:25:29 pm »
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!...
« Última modificação: Maio 21, 2016, 05:27:28 pm por noelreis »
Programadores são ferramentas para converter cafeína em código.