Qlik Community

Qlik Brasil

Welcome to the group for Brazil users. .All discussions will be in Portuguese.

rvsilvestre
Contributor III

Re: Criar nova tabela a partir de combinação de valores

Seguindo essa mesma lógica, falta vc criar um FOR onde vc consiga buscar uma data por vez , fazer esse processo que eu passei e depois concatenar tudo.

Qualquer dúvida posta ai.

luizclaudio
Contributor

Re: Criar nova tabela a partir de combinação de valores

Bom dia

Já consegui avançar um pouco

A dica sobre o TRACE foi ótima... O problema agora está na string da equipe...

Na visualização ela aparece certinha, mas ao carregar na tabela aparecem datas incorretas e um valor negativo.

E nas datas que tenho na tabela original aparece apenas um traço (hífen)...

Creio que o erro está neste trecho

tab_equipe:

  load distinct

    $(equipe) as Equipe,

  $(Dia_Escala) as Dia 

Resident Resultados;

Abaixo está a rotina completa....

for vRow = 0 to NoOfRows('Resultados')-1

LET vDia = Peek('Dia', $(vRow), 'Resultados');

LET Dia_Escala = vDia;

LET vHorário = Peek('Horário', $(vRow), 'Resultados');

  do while N <= 4

  LET vDia = Peek('Dia', $(vRow)+N, 'Resultados');

  LET vFuncionario = Peek('Funcionario', $(vRow)+N, 'Resultados');

  if N = 0 then

   LET equipe = vFuncionario;

  ELSE

   LET equipe = equipe&'-'&vFuncionario;

  endif

  

  N = N + 1;

  loop

  LET N = 0;

    LET vRow = vRow + 4;

TRACE $(equipe);

   

tab_equipe:

  load distinct

    $(equipe) as Equipe,

  $(Dia_Escala) as Dia 

Resident Resultados;

Next

rvsilvestre
Contributor III

Re: Criar nova tabela a partir de combinação de valores

Cara, ali em :

LET equipe = equipe&'-'&vFuncionario;

troca esse '-' , ou use um SET... porque ele deve estar fazendo um calculo tipo  1-2 = -1.

E das datas deve ser alguma questão de formato, eu acho.


rvsilvestre
Contributor III

Re: Criar nova tabela a partir de combinação de valores

o trace ajuda bastante a entender o processo, melhor que um debug rsrs... Bota um "trace $(Dia_Escala)" pra ver como esta vindo tbm

rvsilvestre
Contributor III

Re: Criar nova tabela a partir de combinação de valores

e não entendi também essa parte:

LET vRow = vRow + 4;

acho que não tem necessidade dessa linha (o FOR já faz um incremento automático, diferente do while que vc coloca n= n+1)

luizclaudio
Contributor

Re: Criar nova tabela a partir de combinação de valores

O problema está mesmo relacionado a isso...

Ele está fazendo cálculo ao invés de concatenar...

A variável comb está definida como string. Para garantir coloquei a seguinte linha:

if N = 0 then
  LET comb = Text(vFuncionario);
ELSE
  LET comb = comb&'/'&Text(vFuncionario);
endif

Mas mesmo assim, ainda faz cálculo e com a barra '/' acaba gerando número exponencial.

rvsilvestre
Contributor III

Re: Criar nova tabela a partir de combinação de valores

use essa '|'

e ao invés de "LET comb = ..." use "SET comb = .."

colocou pra rodar o exemplo que passei? ele funciona certinho.

luizclaudio
Contributor

Re: Criar nova tabela a partir de combinação de valores

Rodrigo

Usar o SET não vai funcionar, pois ele armazena a "expressão" e não o valor...

Utilizei o LET e com a barra vertical funciona a concatenação dos dados, mas passou a dar o erro abaixo.

Alguma idéia?

Erro de sintaxe, cláusula FROM faltando ou colocada na posição errada:

tab_terno:

load distinct

  10|75|81|31|72 as Comb,

  02/01/2015 as Dia 

Resident Resultados

tab_terno:

load distinct

  10|75|81|31|72 as Comb,

  02/01/2015 as Dia 

Resident Resultados

Em tempo: ainda não usei a sua rotina, pois fiz um teste e não traz o que preciso...

rvsilvestre
Contributor III

Re: Criar nova tabela a partir de combinação de valores

Se usar assim funciona:

SET comb = $(comb)&'|'&$(vFuncionario) ;

não precisa usar a função text() , e quanto ao erro no load da tabela traga a variável entre aspas simples assim:

load distinct

  '$(comb)' as Comb,

  '$(Dia_Escala)' as Dia

Resident Resultados

luizclaudio
Contributor

Re: Criar nova tabela a partir de combinação de valores

Valeu Rodrigo

Agora funcionou... mas com uma pequena alteração

Em vez de:

SET comb = $(comb)&'|'&$(vFuncionario) ;

Ficou:

SET comb = $(comb)|$(vFuncionario) ;


Um grande abraço e obrigado