<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Problemas com consulta sql em variável montada dinamicamente in Brasil</title>
    <link>https://community.qlik.com/t5/Brasil/Problemas-com-consulta-sql-em-vari%C3%A1vel-montada-dinamicamente/m-p/96872#M5265</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Boa tarde Pessoal,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Estou com uma dúvida de como tratar valores literais dentro de uma consulta SQL carregada dinamicamente em uma variavel. O Script abaixo funciona, porém, gostaria de saber se existe uma forma mais direta de fazer a mesma coisa sem ser obrigado a criar variáveis de memória para cada condição que eu tiver no where&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A ideia é fazer um select em todas as 21 empresas. O código abaixo funciona, mas supondo que a X5_TABELA fosse somente a ZX, eu não poderia fazer:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;cSql = cSql &amp;amp; ' LEFT JOIN SX5$(n)0 CIV ON RA_ESTCIVI = CIV.X5_CHAVE AND CIV.X5_TABELA&lt;STRONG style="color: #ff0000;"&gt;='ZX' ';&lt;/STRONG&gt;&amp;nbsp; ao inves de CIV.X5_TABELA&lt;STRONG style="color: #ff0000;"&gt;=$(tabZX)';&lt;/STRONG&gt; como está no código abaixo ?&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Existe algum caracter de escape que trate isso ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Se eu utilizar a consulta com literais na cláusula SQL SELECT... funciona sem problemas.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--- CODIGO FUNCIONAL ----&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set tab33 = "'33'";&lt;/P&gt;&lt;P&gt;set tabZX = "'ZX'";&lt;/P&gt;&lt;P&gt;set vazio = "''";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for x = 1 to 21&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if x &amp;lt;&amp;gt; 3 and x &amp;lt;&amp;gt; 4&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let n = Num(x,'00');&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' SELECT RA_FILIAL ,RA_MAT, RA_NOMECMP, RA_SEXO, RJ_DESC, CIV.X5_DESCRI AS EST_CIVIL, RA_ADMISSA, RA_DEMISSA, RA_NASC, RA_SITFOLH,' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' RA_SEGUROV, RA_CATFUNC, RA_SALARIO, RA_XSALCOT, RA_XDISTRI, RA_DEPTO, RA_ITEM, RA_CLVL, RA_CODMUN, CC2_MUN, ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' ALOC.X5_DESCRI AS ALOCACAO, RA_TNOTRAB, RA_HRSDIA,&amp;nbsp; RA_HRSEMAN, RA_HRSMES, RA_XCODPO, RA_XCODPS, ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' VER.CV0_DESC AS VERTICAL,&amp;nbsp; REG.CV0_DESC AS REGIONAL ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' FROM SRA$(n)0 RA ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' INNER JOIN SRJ010 RJ ON RA_CODFUNC = RJ_FUNCAO ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN SX5$(n)0 CIV ON RA_ESTCIVI = CIV.X5_CHAVE AND CIV.X5_TABELA=$(tabZX) ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN SX5$(n)0 ALOC ON RA_XALOCA = ALOC.X5_CHAVE AND ALOC.X5_TABELA=$(tab33) ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN CV0010 VER ON VER.CV0_CODIGO = RA_EC05DB AND VER.CV0_ITEM&amp;lt;&amp;gt;$(vazio) '; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN CV0010 REG ON REG.CV0_CODIGO = RA_EC06DB AND REG.CV0_ITEM&amp;lt;&amp;gt;$(vazio) ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN CC2010 CC2 ON RA_CODMUN = CC2_CODMUN AND CC2_MUN&amp;lt;&amp;gt;$(vazio) ';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if x &amp;lt; 21 then &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' UNION ALL ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endif &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace $(x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endif&lt;/P&gt;&lt;P&gt;Next&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Trace $(cSql);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[funcionario]:&lt;/P&gt;&lt;P&gt;Load RA_MAT as Matricula,&lt;/P&gt;&lt;P&gt;RA_NOMECMP as Nome;&lt;/P&gt;&lt;P&gt;sql $(cSql);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Obrigado pela atenção.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 29 Jun 2018 21:34:56 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2018-06-29T21:34:56Z</dc:date>
    <item>
      <title>Problemas com consulta sql em variável montada dinamicamente</title>
      <link>https://community.qlik.com/t5/Brasil/Problemas-com-consulta-sql-em-vari%C3%A1vel-montada-dinamicamente/m-p/96872#M5265</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Boa tarde Pessoal,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Estou com uma dúvida de como tratar valores literais dentro de uma consulta SQL carregada dinamicamente em uma variavel. O Script abaixo funciona, porém, gostaria de saber se existe uma forma mais direta de fazer a mesma coisa sem ser obrigado a criar variáveis de memória para cada condição que eu tiver no where&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A ideia é fazer um select em todas as 21 empresas. O código abaixo funciona, mas supondo que a X5_TABELA fosse somente a ZX, eu não poderia fazer:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;cSql = cSql &amp;amp; ' LEFT JOIN SX5$(n)0 CIV ON RA_ESTCIVI = CIV.X5_CHAVE AND CIV.X5_TABELA&lt;STRONG style="color: #ff0000;"&gt;='ZX' ';&lt;/STRONG&gt;&amp;nbsp; ao inves de CIV.X5_TABELA&lt;STRONG style="color: #ff0000;"&gt;=$(tabZX)';&lt;/STRONG&gt; como está no código abaixo ?&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Existe algum caracter de escape que trate isso ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Se eu utilizar a consulta com literais na cláusula SQL SELECT... funciona sem problemas.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--- CODIGO FUNCIONAL ----&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set tab33 = "'33'";&lt;/P&gt;&lt;P&gt;set tabZX = "'ZX'";&lt;/P&gt;&lt;P&gt;set vazio = "''";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for x = 1 to 21&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if x &amp;lt;&amp;gt; 3 and x &amp;lt;&amp;gt; 4&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let n = Num(x,'00');&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' SELECT RA_FILIAL ,RA_MAT, RA_NOMECMP, RA_SEXO, RJ_DESC, CIV.X5_DESCRI AS EST_CIVIL, RA_ADMISSA, RA_DEMISSA, RA_NASC, RA_SITFOLH,' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' RA_SEGUROV, RA_CATFUNC, RA_SALARIO, RA_XSALCOT, RA_XDISTRI, RA_DEPTO, RA_ITEM, RA_CLVL, RA_CODMUN, CC2_MUN, ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' ALOC.X5_DESCRI AS ALOCACAO, RA_TNOTRAB, RA_HRSDIA,&amp;nbsp; RA_HRSEMAN, RA_HRSMES, RA_XCODPO, RA_XCODPS, ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' VER.CV0_DESC AS VERTICAL,&amp;nbsp; REG.CV0_DESC AS REGIONAL ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' FROM SRA$(n)0 RA ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' INNER JOIN SRJ010 RJ ON RA_CODFUNC = RJ_FUNCAO ' ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN SX5$(n)0 CIV ON RA_ESTCIVI = CIV.X5_CHAVE AND CIV.X5_TABELA=$(tabZX) ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN SX5$(n)0 ALOC ON RA_XALOCA = ALOC.X5_CHAVE AND ALOC.X5_TABELA=$(tab33) ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN CV0010 VER ON VER.CV0_CODIGO = RA_EC05DB AND VER.CV0_ITEM&amp;lt;&amp;gt;$(vazio) '; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN CV0010 REG ON REG.CV0_CODIGO = RA_EC06DB AND REG.CV0_ITEM&amp;lt;&amp;gt;$(vazio) ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' LEFT JOIN CC2010 CC2 ON RA_CODMUN = CC2_CODMUN AND CC2_MUN&amp;lt;&amp;gt;$(vazio) ';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if x &amp;lt; 21 then &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cSql = cSql &amp;amp; ' UNION ALL ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endif &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trace $(x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endif&lt;/P&gt;&lt;P&gt;Next&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Trace $(cSql);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[funcionario]:&lt;/P&gt;&lt;P&gt;Load RA_MAT as Matricula,&lt;/P&gt;&lt;P&gt;RA_NOMECMP as Nome;&lt;/P&gt;&lt;P&gt;sql $(cSql);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Obrigado pela atenção.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2018 21:34:56 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Brasil/Problemas-com-consulta-sql-em-vari%C3%A1vel-montada-dinamicamente/m-p/96872#M5265</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2018-06-29T21:34:56Z</dc:date>
    </item>
  </channel>
</rss>

