Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
isaiasdd
Creator
Creator

Parâmetro Opcional em variável

Criei uma variável com parâmetro da seguinte forma:

SET vMapPreposicoes = MapSubString('MapPreposicoes', Capitalize($1)) as $2;

Porém em 90% dos casos, o nome do campo se mantém original, como posso fazer para que no "as $2" ele use o "$1", quando $2 não for informado?

Tentei da seguinte maneira "as Alt($2, $1);" Porém não funciona.

Labels (3)
8 Replies
Thiago_Justen_

Isaias,

Se entendi bem o que você precisa pode usar:

If(IsNull($2),$1,$2)

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
isaiasdd
Creator
Creator
Author

Thiago,

Tentei desta maneira também, porém obtenho o mesmo erro que o Alt($2, $1).

O erro é esse:

Unexpected token: '(', expected one of: ',', 'AutoGenerate', 'From', 'From_Field', 'Inline', 'Resident', 'Extension', ...:

MapSubString('MapPreposicoes', Capitalize("Dados Complementares do Material")) as If>>>>>>(<<<<<<IsNull($2), "Dados Complementares do Material", $2)

Thiago_Justen_

Pode postar o script?

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
isaiasdd
Creator
Creator
Author

Claro, basicamente é esse o script da tabela:

FOR Ano = $(vAnoIni) TO $(vAnoFim)

    FOR Mes = $(mesini) TO $(mesfin)

 

        LET Mes_Format = num(Mes, '00');

        TRACE Executando: $(vQVDSaida)$(Ano)$(Mes_Format);

       

        Tabela:

        LOAD

            PK_cmamat,

            "Código Empresa",

            "Código Material",

            "Data Início Validade Material",

            "Data Fim Validade Material",

            "Identificador Código Individual Material",

            "Curva ABC Material",

            "Conta Contábil",

            "Conta Contábil"&'|'& "Código Empresa" as PK_cgapce,

            $(vMapPreposicoes("Dados Complementares do Material", "Dados Complementares do Material")),

            Date(DayStart(MonthEnd(MakeDate($(Ano), $(Mes_Format))))) as "Data"

        FROM [lib://Transformados/T_cmamat.qvd](qvd);

      NEXT

NEXT

e minha variavel:

SET vMapPreposicoes = MapSubString('MapPreposicoes', Capitalize($1)) as If(IsNull($2), $1, $2);

Thiago_Justen_

Isaias,

Teste assim:

  1. FOR Ano = $(vAnoIni) TO $(vAnoFim) 
  2.  
  3.     FOR Mes = $(mesini) TO $(mesfin) 
  4.    
  5.         LET Mes_Format = num(Mes, '00'); 
  6.         TRACE Executando: $(vQVDSaida)$(Ano)$(Mes_Format); 
  7.          
  8.         Tabela: 
  9.         LOAD 
  10.             PK_cmamat, 
  11.             "Código Empresa", 
  12.             "Código Material", 
  13.             "Data Início Validade Material", 
  14.             "Data Fim Validade Material", 
  15.             "Identificador Código Individual Material", 
  16.             "Curva ABC Material", 
  17.             "Conta Contábil", 
  18.             "Conta Contábil"&'|'& "Código Empresa" as PK_cgapce, 
  19.             $(vMapPreposicoes), 
  20.             Date(DayStart(MonthEnd(MakeDate($(Ano), $(Mes_Format))))) as "Data" 
  21.         FROM [lib://Transformados/T_cmamat.qvd](qvd); 
  22.  
  23.       NEXT 
  24. NEXT 
Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
isaiasdd
Creator
Creator
Author

Thiago,

Assim ele me retorna erro dizendo que não encontrou os parâmetros $1.

Clever_Anjos
Employee
Employee

Não entendi bem, você quer criar ora uma coluna e ora outra?

isaiasdd
Creator
Creator
Author

Quero que no "AS" ele verifique se o segundo parâmetro foi passado, caso afirmativo ele seta o nome da coluna conforme passado, caso o segundo parâmetro esteja nulo, ele setar como nome da coluna o valor passado no parâmetro um.

Ex.:

$(vMapPreposicoes("Campo 1")) -> seta o nome como "Campo 1"

$(vMapPreposicoes("Campo 1", "Campo 1 Mod")) -> seta o nome como "Campo 1 Mod"