Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Srs, Bom dia a todos e um ótimo 2018 !
Tenho uma extração que preciso tratar da seguinte forma:
Let DtInicioMes = Date(MonthStart(Today(1)),'YYYY-MM-DD');
Let DtFimMes Date(MonthEnd (Today(1)),'YYYY-MM-DD');
Sempre busco informação do mês cheio , porém eu devo trazer informações do mês cheio apenas depois do 5º dia últil, pois pode ter informação não processada ainda.
Exemplo : dia 28 e 29 e 30 de Dezembro/2018, eu executei o QVW, porém na base ainda não tinha informação desses dias , como executo diariamente não terei a informação deles naquele mês, apenas nos proximos dias do mês seguinte.
como o fechamento tenho a data limite de até o 5º dia útil , preciso tratar, para executar o inicio / fim do mês apenas depois do quinto dia ultil. na clausula where :
where redata between '$(DtInicioMes)' and '$(DtFimMes)'
Obrigado
Eduardo !
Neste caso não foi o tratamento no caso que você passou é para o qvd.
Mas eu resolvi da seguinte forma.
Adicionei 5 dias , na data final, assim sempre vou ter os dias necessários para ter o mês completo .
Let DtFimMes = Date(MonthEnd (Today(1))+5,'YYYY-MM-DD');
Muito obrigado pela ajuda e rapidez nas respostas.
Tenha uma boa semana.
Oi Luiz, tudo bem?
Para eu entender melhor voce quer trazer por exemplo do mes de dezembro 2017 (no exemplo esta 2018, por isso minha duvida), então no caso voce pegaria toda a informação do 5 dia util de Dez/17 ate o ultimo dia dele (util ou nao), ou seja, 07/12/2017 - 31/12/2017. Correto?
Eduardo, Tudo bem sim e com você ?
O que ocorre é que no final do mês alguns dias os dados ainda não estão na tabela devido o fechamento ou seja hoje estou verificando inicio do mês atual e final do mês atual.
Sendo que dados dos dias 28,29,30,31 do mês 12/2017 estão sendo gravados na tabela ainda.
Na realizado só posso executar o inicio/fim do mês atual após o 5º dia útil de casa mês.
Essa parte do mês atual que eu não entendi, pelo exemplo que tu passou você só pode processar o mês anterior apos o 5 dia útil do mês atual. No caso você vai processar o mês de dezembro(anterior) só apos o 5 dia útil de janeiro (atual). É isso?
Eduardo, talvez eu não estou sendo claro, desculpe !
Olha só :
where redata between '2017-12-01' and '2017-12-31'
Todo mês, após o fechamento(5º dia útil), substituir as datas para o inicio/fim do mês corrente
Neste caso fica assim : '2018-01-01' and '2018-01-31', só após o 5º dia útil).
Bom de qualquer forma, tenho duas soluções pra ti e voce ve quais fica melhor pra sua situação.
A primeira voce cria um excel com o 5 dia util de cada mes e depois só le essa tabela pra ter seu DtFimMes.
A segunda é um If encadeado.
Let vData=Weekday(StartMonth(Today()))
If (vData=Seg,DtFimMes=vData+4,
If (vData=Dom,DtFimMes=vData+5,
DtFimMes=VData+6))
Ah, entendi. Entao voce apenas quer saber se já é o 5 dia util pra poder fazer a alteração.
Let vData=Weekday(StartMonth(Today()))
//******** Verifica o 5 dia Util******************
If (vData=Seg,vDataCheck=vData+4,
If (vData=Dom,vDataCheck=vData+5,
vDataCheck=VData+6))
//************************************************
If (Today()=vDataCheck) Then
Let DtInicioMes = Date(MonthStart(Today(1)),'YYYY-MM-DD');
Let DtFimMes Date(MonthEnd (Today(1)),'YYYY-MM-DD');
EndIf
Acho que isso deve resolver
Eduardo, Bom dia !
Desculpe não responder, mas fiquei sem acesso a internet aqui no escritório.
Esta rotina estou executando diretamente no ETL , para gerar o QVD .
Sorry, pensei que estivesse mencionado.
Atenciosamente.
Oi Luiz, tranquilo, mas esse código que eu passei não funciona?
Eduardo !
Neste caso não foi o tratamento no caso que você passou é para o qvd.
Mas eu resolvi da seguinte forma.
Adicionei 5 dias , na data final, assim sempre vou ter os dias necessários para ter o mês completo .
Let DtFimMes = Date(MonthEnd (Today(1))+5,'YYYY-MM-DD');
Muito obrigado pela ajuda e rapidez nas respostas.
Tenha uma boa semana.