Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Independent validation for trusted, AI-ready data integration. See why IDC named Qlik a Leader: Read the Excerpt!
cancel
Showing results for 
Search instead for 
Did you mean: 
LucenaHenrick
Contributor
Contributor

FOR EACH NÃO ESTÁ ACHANDO O QVD

Estou tentando fazer um laço de repetição com FOR e FOR EACH, declarei a variável dessa forma:

for v_ano = VsAnoAtual to VsAnoAtual   
//o que já uso em outros scripts e da certo
 
for each v_mes in 'out'   
// geralmente utilizo apenas FOR pois salvo os QVDs com números, porém esse QVD foi criado com nome do mês
 
O script fica assim: 
 
for v_ano = VsAnoAtual to VsAnoAtual
for each v_mes in 'out'
IF FileSize('lib://QVDEstoque:DataFiles/DWNAGT_METAVENDA_NIVEIS_$(v_mes) $(v_ano).QVD') > 0 THEN
Trace CARREGANDO QVD DWNAGT_METAVENDA_NIVEIS_$(v_mes) $(v_ano);
 
            Metas:
            LOAD
                DATA,
                EMPRESA
            FROM [lib://QVDEstoque:DataFiles/DWNAGT_METAVENDA_NIVEIS_$(v_mes) $(v_ano).qvd](qvd);
        ELSE 
            Trace DWNAGT_METAVENDA_NIVEIS_$(v_mes) $(v_ano).qvd não existe...;
        ENDIF;  
  next   
next
 
Existe um espaço entre o mês nominal e o ano mesmo, no trace ele entende ambas variáveis e o espaço, porém não retorna os dados, o QVD não é encontrado!
 
 
Labels (3)
1 Solution

Accepted Solutions
LucenaHenrick
Contributor
Contributor
Author

Galera, pra quem tiver a mesma duvida, irei compartilhar a solução que achei:


SESSION

// Meses em formato texto (de acordo com os nomes dos QVDs)
SET vMesesCompletos = 'jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez';


SCRIPT

// Ano atual - todos os meses
FOR EACH v_mes IN $(vMesesCompletos)
LET v_ano = $(VsAnoAtual);
LET v_arquivo = 'lib://QVDEstoque:DataFiles/DWNAGT_METAVENDA_NIVEIS_$(v_mes) $(v_ano).qvd';

IF FileSize('$(v_arquivo)') > 0 THEN
TRACE Carregando $(v_arquivo);
METAS:
LOAD
DATA,
EMPRESA
FROM [$(v_arquivo)] (qvd);
ELSE
TRACE Arquivo não encontrado: $(v_arquivo);
ENDIF
NEXT

View solution in original post

1 Reply
LucenaHenrick
Contributor
Contributor
Author

Galera, pra quem tiver a mesma duvida, irei compartilhar a solução que achei:


SESSION

// Meses em formato texto (de acordo com os nomes dos QVDs)
SET vMesesCompletos = 'jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez';


SCRIPT

// Ano atual - todos os meses
FOR EACH v_mes IN $(vMesesCompletos)
LET v_ano = $(VsAnoAtual);
LET v_arquivo = 'lib://QVDEstoque:DataFiles/DWNAGT_METAVENDA_NIVEIS_$(v_mes) $(v_ano).qvd';

IF FileSize('$(v_arquivo)') > 0 THEN
TRACE Carregando $(v_arquivo);
METAS:
LOAD
DATA,
EMPRESA
FROM [$(v_arquivo)] (qvd);
ELSE
TRACE Arquivo não encontrado: $(v_arquivo);
ENDIF
NEXT