4 Replies Latest reply: Jul 19, 2012 11:08 AM by Luiz Carlos Oliveira RSS

    Tratamento de Tabelas (Funções de script)

    Luiz Carlos Oliveira

      Olá a todos!

       

      Estou com problema no tratamento de uma tabela. Estou trabalhando na montagem de um balancete e o banco da aplicação só grava informação se houver movimento.

       

      Com isto quando preciso gerar informações de uma determinada competência o minha nuvem não me mostra todas as informações porque a aplicação não grava a posição do mês atual em todas as contas.

       

      Eis minha situação:

       

      Capturar.PNG

      Existe alguma função de script que eu consiga preencher as lacunas?

        • Re: Tratamento de Tabelas (Funções de script)
          Aderlan Rodrigues

          Olá Carlos,

           

          Dá uma olhada na resposta desse post: http://community.qlik.com/message/206083#206083

           

          Vai resolver isso para você.

           

          Abraço.

            • Re: Tratamento de Tabelas (Funções de script)
              Luiz Carlos Oliveira

              Aderlan, Muito obrigado pela resposta.

               

              Entendi a idéia, mas não consigo visualizar a execução (talvez porque minha formação seja em administração, rsrsrs) eu posso casar o autogenerate dentro da tabela em questão?

               

              esse autogenerate teria de enxergar dois campos que serveriam para quebra que são: filial e conta,

               

              ou seja, se não houver registro para a competencia distinta nas conta e ou nas filiais existentes o autogenerate iria incrementar para mim ?

               

               

               

              Let v_anomes_ini = Year(MakeDate(2000,1,1)&num(month(MakeDate(2000,1,1)),'00'));

              Let v_anomes_Fim = Year(Today())&Num(Month(today()),'00');

              Let v_ncompetencia = $(v_anomes_Fim) - $(v_anomes_ini) + 1;

               

               

              [anomes_aux]:

              LOAD Date($(v_anomes_ini) + RecNo()) as ANOMES_TESTE

              AutoGenerate $(v_ncompetencia);

               

              [PCR_SALDO]:

               

               

                   LOAD PCR_SaldoAcm.SeqConta,

                   PCR_SaldoAcm.SeqFilial,

                   PCR_SaldoAcm.AnoMes,

                   PCR_SaldoAcm.SaldoInicial,

                   PCR_SaldoAcm.SomaDebito,

                   PCR_SaldoAcm.SomaCredito,

                   PCR_SaldoAcm.SaldoFinal

                • Re: Tratamento de Tabelas (Funções de script)
                  Aderlan Rodrigues

                  Olá Carlos, tudo bem?

                   

                  O autogenerete seria um passo anterior, apenas um auxilio confome você fez, alias, parabéns pelo seu código, para quem é formado em administração você tem muita vocação para programador, está, sem dúvida, no caminho certo com o QlikView.

                   

                  Fiz alguns ajustes do código e completei a lógica, dá uma olhada, para incluir mais campos pode acrecentar no LEFT e repetir o tratamento "se for vazio preencher com o anterior" em todos os campos que você precisar.

                   

                  Abraço.

                   

                  Segue o código:

                  Let v_anomes_ini = MakeDate(2000,1,1);

                  Let v_anomes_fim = Today();

                  Let v_ncompetencia = (v_anomes_fim - v_anomes_ini) + 1;

                   

                  Temp:

                  LOAD Date((MakeDate(2000,1,1) + RecNo())-1,'yyyyMM') as anomes

                  AutoGenerate $(v_ncompetencia);

                   

                  Left Join (Temp)

                  LOAD * INLINE [

                      conta, anomes

                      17451, 200802

                      17451, 201201

                      17452, 201201

                  ];

                   

                  Contas:

                  NoConcatenate

                  LOAD *

                  Resident Temp

                  Order By anomes, conta;

                   

                  STORE Contas into Autogenerete.qvd (qvd);

                   

                  DROP Table Temp;

                  DROP Table Contas;

                   

                  Contas:

                  LOAD @1 as anomes,

                       @2 as conta

                  FROM

                  Autogenerete.qvd

                  (qvd, filters(

                  Replace(2, top, StrCnd(null))

                  ));

                    • Re: Tratamento de Tabelas (Funções de script)
                      Luiz Carlos Oliveira

                      Aderlan,

                       

                      Muito obrigado, pela 'mãozona', consegui o resultado que esperava. Sua ajuda foi fundamental!!!!

                       

                      Estava tentando montar um balancete de verificação.

                       

                      Consegui fazer funcionar através de um outer join, muito semelhante a sua instrução, quanto aos saldos, utilizei a função peek (crédito para o blog 'falar de ovos fritos') para que complete o espaços em branco. Antes disso, havia encontrado valores relevantes, através da função firstsortedvalue, muito interessante.

                       

                      Te devo essa!