Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

"Cursor" no qlikview

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?

Tags (1)
1 Solution

Accepted Solutions
rphpacheco
Contributor III

Re: "Cursor" no qlikview

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

3 Replies
rphpacheco
Contributor III

Re: "Cursor" no qlikview

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, 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

Not applicable

Re: "Cursor" no qlikview

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!