5 Replies Latest reply: Feb 25, 2014 3:22 PM by Clever Anjos RSS

    Load com While

      Olá pessoa, esse acho que é fácil, porém nunca usei, então não conheço direito a sintaxe do Script

       

      Eu trago do SQL Server uma tabela que define as metas dos meus indicadores, no formado:

       

      Indicador - DataInicioMeta - DataFimMeta - ValorMeta

       

      O que preciso fazer é "Distribuir" este "ValorMeta" dia a dia dentro do prazo definido entre "DataInicioMeta" e "DataFimMeta"

       

      Eu imagino que o algorítimo é algo como:

       

      Carregue

           Indicador,

            Enquanto Contador Menor que DataFimMeta

            DataMeta = DataInicioMeta + Contador

            Adicione 1 ao contador

           Fim da Carga as DataMeta,

           ValorMeta;

       

       

      Como transformar isso num Script do QV ?

        • Re: Load com While

          Consegui resolver meu problema em partes. Agora conto com a ajuda do pessoal

           

          O Script abaixo faz o que preciso.

           

           

           

          Tabela:

          LOAD * INLINE [

              Indicador, DataInicialMeta, DataFinalMeta, ValorMeta

              A, 01/01/2013, 25/02/2014, 1

              B, 01/05/2013, 25/02/2014, 2

              C, 01/07/2013, 25/02/2014, 3 ];

           

          Let a = 1;

           

          Do While a < 10

            Indicador:

            Load Indicador   as Indicador,

                 Date(DataInicialMeta + $(a), 'DD/MM/YYYY')   as DataMeta,

                 ValorMeta   as ValorMeta

                 Resident Tabela;

            Let a = $(a) + 1;

          Loop;       


          Drop Table Tabela;




          Mas tem um PORÉM eu coloquei o limite do contador em 10 de maneira fixa. Porém o limite do meu contador é dinâmico, ou seja, ele é a Diferença entre a Data Inicial e a Data Final. Mas como eu pego estes valores se ainda não dei Load quando o While começa ?????


          Help

            • Re: Load com While
              Thiago das Chagas cunha

              Boa Tarde

               

              Segue um exemplo de como você pode usar, se quiser uma carga diaria por exemplo

               

               

               

               

                FOR vMes = if(vAno <>  Year(vIniProc), 01, Month(vIniProc)) TO If ( Month(vIniProc) >  Month(vFimProc) and vAno =  Year(vIniProc) , 12,   Month(vFimProc) )

               

                LET vIni = date(monthstart(makedate(vAno,vMes,1)),'DD/MM/YYYY hh:mm:ss');

                LET vFim = date(monthend(makedate(vAno,vMes,1)),'DD/MM/YYYY hh:mm:ss');

               

               

              FAÇA  A SELECT AQUI

               

               

               

               

                NEXT

              NEXT

            • Re: Load com While
              Clever Anjos

              Uma outra maneira

              Tmp:
              SQL SELECT Indicador, DataInicioMeta, DataFimMeta ,ValorMeta
              From tabela;
              
              Intervalos:
              LOAD Indicador,
                  Date(DataInicioMeta + IterNo() -1) as Data,
              Resident Tmp;
              while IterNo() < (DataFimMeta- DataInicioMeta-1);