3 Replies Latest reply: Oct 2, 2013 2:41 PM by Rodolfo Ferreira RSS

    "Cursor" no qlikview

    Rodolfo Ferreira

      Galera, boa tarde,

       

      to tentando fazer uma parada que é um simples cursor no Sql mas não consigo fazer no qlik...

      O objetivo é preencher o campo cod_conta_contabil com o numero da conta contabil anterior caso essa esteja vazia, e fazer isso até o final da tabela. Porém, tenho N linhas em branco abaixo de cada conta contábil....

      Por exemplo:

      Esta tabela

      1128210000C.C. 1128210000
      011 - Codigo 011
      015 - Codigo 015
      019 - Codigo 019
      021 - Codigo 021

       

      Deve se tornar esta tabela

      1128210000
      011 - Codigo 011
      1128210000015 - Codigo 015
      1128210000019 - Codigo 019
      1128210000021 - Codigo 021

       

      A primeira linha será eliminada e só ficarão as linhas debaixo com a conta contabil correta.

       

      LOAD seq

         , if ( cod_conta_contabil = '', Previous(cod_conta_contabil), cod_conta_contabil ) as cod_conta_contabil

         , cod_conta_contabil as cod_conta_contabil_original

         , nome_conta_contabil

         , movimentacao

         , saldocontabil

      Resident tabela

      While seq < maxseq

      Order By seq

      ;

       

      Podem me ajudar?

        • Re: "Cursor" no qlikview
          Raphael Pacheco

          Tente assim:
          If(RecNo() = 1 and Not IsNull(cod_conta_contabil), // Aqui você verificará se contém dado no primeiro registro

               cod_conta_contabil, // Se tiver ele preencherá com ele mesmo

               If(IsNull(cod_conta_contabil), // ele verificará se cod_conta_contabil é nulo

                    Peek([Código da Conta Contábil]), // Se for, ele irá pegar o último registro,

                    cod_conta_contabil // Senão apenas o cod_conta_contabil

               )

          )                                                                 as [Código da Conta Contábil]

           

          Acho que irá resolver

            • Re: "Cursor" no qlikview
              Rodolfo Ferreira

              Excelente, resolveu.

               

              aux5:

              Load seq

                 , If(RecNo() = 1 and Not cod_conta_contabil = '', cod_conta_contabil

                   , If(cod_conta_contabil = '', Peek([cod_conta_contabil2]), cod_conta_contabil)) as cod_conta_contabil2

                 , cod_conta_contabil as cod_conta_contabil_original

                 , nome_conta_contabil

                 , movimentacao

                 , saldocontabil

              Resident aux4

              ;

               

              Agora partindo para o próximo desafio.

               

              Abraço!    

            • Re: "Cursor" no qlikview
              Yuri Nicolett

              Rodolfo, para isso você vai precisar utilizar a função Peek()

               

              O previous verifica o registro anterior, porém quando você estiver no segundo passo ele vai retornar nulo, por exemplo:

               

              Col1    Col2

              10000 A

                        B -> Previous (Col1) = 10000

                        C -> Previous (Col1) = Sem Valor

              2222   D -> Previous (Col1) = Sem Valor

                        E -> Previous (Col1) = 222