5 Replies Latest reply: Aug 31, 2017 8:04 AM by Marcel Vinicius de Oliveira RSS

    Carga por data se tiver o mês

    Marcel Vinicius de Oliveira

      Boa tarde pessoal,

       

      Gostaria de tirar uma duvida: consigo criar uma carga de dados para um QVD somente se tiver o mês?

      Para tirar a confusão:

      Tenho os seguintes parâmetros:

      //Busca o mês corrente

      LET vrDataIni = DATE(MonthStart(AddMonths(Today())),'YYYY/MM/DD');

      LET vrDataFim  = DATE(MonthEnd(AddMonths(Today())),'YYYY/MM/DD');

       

      //Busca um mês antes do mês corrente

      LET vrDataIni1  = DATE(MonthStart(AddMonths(Today(),-1)),'YYYY/MM/DD');

      LET vrDataFim1  = DATE(MonthEnd(AddMonths(Today(),-1)),'YYYY/MM/DD');

       

      //Busca dois meses antes do mês corrente

      LET vrDataIni2  = DATE(MonthStart(AddMonths(Today(),-2)),'YYYY/MM/DD');

      LET vrDataFim2  = DATE(MonthEnd(AddMonths(Today(),-2)),'YYYY/MM/DD');

       

      Porém quero saber se consigo fazer esse tipo de carga somente se tiver mês para trás no ano:

      Exemplo:

      Janeiro de 2017 - um mês antes é Dezembro de 2016  - e eu NÃO quero buscar as informações do mês anterior, ou seja, busca nada.

       

      Tem como fazer isso?

       

      Fui claro?

       

      Atenciosamente.

        • Re: Carga por data se tiver o mês
          Felip Drechsler

          Olá Marcel,

           

          não ficou muito claro se você quer pegar os meses onde há QVDs ou se você quer fazer uma carga específica, com base em datas.

           

          Poderia explicar melhor?

           

          Felipe.

            • Re: Carga por data se tiver o mês
              Marcel Vinicius de Oliveira

              Boa tarde felipedl

              Carga especifica. Eu pego informações baseadas nessas datas.

               

              Eu busco sempre 3 meses de dados no banco. Mas quero buscar os ultimos 12 meses, porém não quero montar um QVD com ano de 2016/2017, somente os meses do ano de 2017, entendeu?

               

              Atenciosamente.

                • Re: Carga por data se tiver o mês
                  Felip Drechsler

                  Marcel,

                   

                  É possível fazer algo parecido com isso

                   

                  // Seta os valores para zero, caso eles sejam englobados em anos inferiores a 2017

                  let vDataIni = 0;

                  let vDataFim = 0;

                  let vDataIni2 = 0;

                  let vDataFim2 = 0;

                  let vDataIni3 = 0;

                  let vDataFim3 = 0;

                   

                  // Verifica se o ano da data atual é 2017 ou maior

                  if (Year(Today())>=2017) then

                  let vDataIni = DATE(MonthStart((Today())),'YYYY/MM/DD');

                  let vDataFim = DATE(MonthEnd((Today())),'YYYY/MM/DD');

                  end if;

                  // Verifica se o ano do mês anterior é 2017 ou maior

                  if (Year(AddMonths(Today(),-1))>=2017) then

                  let vDataIni2 = DATE(MonthStart(AddMonths(Today(),-1)),'YYYY/MM/DD');

                  let vDataFim2 = DATE(MonthEnd(AddMonths(Today(),-1)),'YYYY/MM/DD');

                  end if;

                  // Verifica se o ano de dois meses atrás é 2017 ou maior

                  if (Year(AddMonths(Today(),-2))>=2017) then

                  let vDataIni3 = DATE(MonthStart(AddMonths(Today(),-2)),'YYYY/MM/DD');

                  let vDataFim3 = DATE(MonthEnd(AddMonths(Today(),-2)),'YYYY/MM/DD');

                  end if;

                   

                  Para o caso em que algum dos meses caia em datas de 2016, o valor dos vDataIni e vDataFim ficará igual a zero.

                  • Re: Carga por data se tiver o mês
                    Thiago Manoel Gonçalo

                    Marcel, boa tarde!

                     

                    Tem varias formas de fazer isso, mais supondo que você continuará sua mesma lógica, fica mais ou menos assim:

                     

                    Basta você colocar uma verificação em toda variável para saber se estamos no Ano Vigênte.

                     

                    Busca o mês corrente,

                    LET vrDataIni = DATE(MonthStart(AddMonths(Today())),'YYYY/MM/DD');

                    LET vrDataFim  = DATE(MonthEnd(AddMonths(Today())),'YYYY/MM/DD');

                     

                    //Busca um mês antes do mês corrente apenas se o mês anterior tiver dentro do ano atual..

                    LET vrDataIni1 = IF(year(MonthStart(AddMonths(Today(),-1))) = year(today()), DATE(MonthStart(AddMonths(Today(),-1)),'YYYY/MM/DD'));

                    LET vrDataFim1  = IF(year(MonthEnd(AddMonths(Today(),-1))) = year(today()), DATE(MonthEnd(AddMonths(Today(),-1)),'YYYY/MM/DD'));

                     

                    /

                    //Busca dois meses antes do mês corrente apenas se o dois meses anterior tiver dentro do ano atual..

                    LET vrDataIni2 = IF(year(MonthStart(AddMonths(Today(),-2))) = year(today()), DATE(MonthStart(AddMonths(Today(),-2)),'YYYY/MM/DD'));

                    LET vrDataFim1  = IF(year(MonthEnd(AddMonths(Today(),-2))) = year(today()), DATE(MonthEnd(AddMonths(Today(),-2)),'YYYY/MM/DD'));

                     

                    e Assim por diante.

                     

                     

                    Qualquer dúvida à disposição.

                     

                    Att,