Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia Pessoal,
Preciso de uma ajuda com relação a ultima data de atualização de status de um formulário de vistoria. Preciso sempre considerar em minha tabela dinâmica a data mais atual de cada unidade vistoriada. Ou seja, sempre considerar a ultima data de cada unidade.
Exemplo:
Unidade Status Data de atualização
100 Reprovada 02/05/2013
200 Reprovada 02/05/2013
300 Aprovada 02/05/2013
100 Aprovada 20/05/2013
400 Reprovada 20/05/2013
No exemplo acima, vocês poderão observar que a unidade 100 agora está aprovada em 20/05/2013, considero sempre esta data como atualizada e não devo mais considerar a data de reprovação 02/05/2013. Porem a unidade 200 continua reprovada. No meu relatório deve aparecer assim:
Unidade Status Data de atualização
100 Aprovada 20/05/2013
200 Reprovada 02/05/2014
300 Aprovada 02/05/2014
400 Reprovada 20/05/2014
Neste caso na minha ultima vistoria dia 20/05 devo considerar esta situação. Caso eu quiser mostrar só as Reprovadas, devo considerar apenas uma vez a unidade 100 em 20/05/2013 e não mais pegar ela como Reprovada em 02/05. E a unidade 200 deve aparecer, pois ainda não foi aprovada.
Sempre devo considerar a máxima data de cada unidade.
Já tentei resolver isto por agregação via expressão mas não funcionou.
Alguém tem uma idéia de como resolver isto de uma maneira mais fácil.
Obrigado pela atenção de todos
João Carlos Ferreira
Oi, João.
Acho que o jeito mais fácil é você criar uma dimensão DATA_ULTIMA_VISTORIA no script e usá-la na tabela com a opção "Ocultar quando o valor for nulo" marcada. O script ficaria assim:
VISTORIA:
Load
METRAGEM,
METRAGEM_OUTROS,
NUMERO_SALA,
UNIDADE,
EMPREENDIMENTO,
STATUS_VISTORIA,
DATA_GRAVAÇAO,
DATA_MODIFICAÇAO,
O_QUE_FOI_AVALIADO,
CÔMODOS,
ITENS,
ITENS_COMODOS,
ITENS_INFORMAÇOES
From VISTORIA.QVD (qvd);
Left Join (VISTORIA) Load
UNIDADE,
Date(Max(DATA_GRAVAÇAO)) as DATA_GRAVAÇAO,
Date(Max(DATA_GRAVAÇAO)) as DATA_ULTIMA_VISTORIA
Resident VISTORIA
Group by UNIDADE;
Assim você não vai precisar usar AGGR nem Set Analysis com datas nas expressões. Anexo segue um QVW com a solução.
Bruno.
Joao,
Creio que você terá que utilizar o comando Firstsortedvalue... envie-me um qvw com esses dados que vou tentar conseguir para vc aqui a lógica.
Abraços.
Bom dia Rogério,
Segue o qvw com a massa de dados.
João Carlos Ferreira.
João, podes enviar novamente, perdi o arquivo!!!
Bom dia Rogério,
Segue o qvw com a massa de dados.
João Carlos Ferreira.
Segue anexo.
Boa noite João Carlos, tudo bem?
Veja o anexo, deixei três colunas e as lista para você entender o comportamento da função AGGR, também pode ver na ajuda F1 mais detalhes da função.
A primeira data é a que está na memória, a segunda é que responde a pergunta aqui e a terceira responde o que está escrito no objeto texto do QVW.
Não esqueça de marcar a opção "Oculta quanto o valor for nulo" nessas dimensões com as formulas.
Espero que seja útil, abraço.
Muito boa a rotina...
Abraços.
Oi, João.
Acho que o jeito mais fácil é você criar uma dimensão DATA_ULTIMA_VISTORIA no script e usá-la na tabela com a opção "Ocultar quando o valor for nulo" marcada. O script ficaria assim:
VISTORIA:
Load
METRAGEM,
METRAGEM_OUTROS,
NUMERO_SALA,
UNIDADE,
EMPREENDIMENTO,
STATUS_VISTORIA,
DATA_GRAVAÇAO,
DATA_MODIFICAÇAO,
O_QUE_FOI_AVALIADO,
CÔMODOS,
ITENS,
ITENS_COMODOS,
ITENS_INFORMAÇOES
From VISTORIA.QVD (qvd);
Left Join (VISTORIA) Load
UNIDADE,
Date(Max(DATA_GRAVAÇAO)) as DATA_GRAVAÇAO,
Date(Max(DATA_GRAVAÇAO)) as DATA_ULTIMA_VISTORIA
Resident VISTORIA
Group by UNIDADE;
Assim você não vai precisar usar AGGR nem Set Analysis com datas nas expressões. Anexo segue um QVW com a solução.
Bruno.
Bruno,
Desculpe a demora em responder. Consegui fazer usando esta mesma ideia que você passou.
Obrigado pela ajuda.
Abrs