1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida Como usar IF dentro Select com ODBC

Discussão em 'Progress 4GL' iniciado por lorenzi, Abril 26, 2017.

  1. lorenzi

    lorenzi Membro Participativo

    Ola pessoal, alguem sabe se existe alguma maneira de usar IF dentro de um select com ODBC:

    $queryestoque = "SELECT \"cd-iten\", descricao, sigla, \"cd-medida-apresentacao\", \"peso-teor\", \"cd-unidade\"
    FROM pub.estc007 where (sigla = '$sigla') and
    if ('$categoria' != '$todos' , \"cod-categoria\" = '$categoria' , \"cod-categoria\" != '0')";

    Usando IF da erro no ODBC. Mas rodando ele em um SQL normal sem ODBC funciona 100%.
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Se você exibir a query numa mensagem, copiar e colar no banco de dados direto funciona?

    MESSAGE $queryestoque VIEW-AS ALERT-BOX.

    Quando aparecer a mensagem, pressiona CTRL+C e cola no banco de dados e veja se funciona, se funcionar então precisamos de mais detalhes.

    Qual banco de dados você está conectando? MySQL, Oracle, SQL Server?
  3. lorenzi

    lorenzi Membro Participativo

    Ola estou conectando num banco progress mesmo.

    O resultado é esse:

    SELECT "cd-iten", descricao, sigla, "cd-medida-apresentacao", "peso-teor", "cd-unidade" FROM pub.estc007 where (sigla = 'ACL') and if ('1' != 'TODOS' , "cod-categoria" = '1' , "cod-categoria" != '0')
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Ao invés de usar \" que polui muito o código, usa a função QUOTER

    $queryestoque = "SELECT " + QUOTER(cd-iten) + "," + QUOTER(descricao) + "," + QUOTER(sigla) + "," + QUOTER(cd-medida-apresentacao) + "," +
    QUOTER(peso-teor) + "," + QUOTER(cd-unidade) + " FROM pub.estc007 WHERE (sigla = " + QUOTER($sigla) + ") AND " +
    "IF(" + QUOTER($categoria) + " != " + QUOTER($todos) + "," + QUOTER(cod-categoria) + " = " + QUOTER($categoria) + "," +
    QUOTER(cod-categoria) " != " + STRING(0) + ");".
  5. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Vixi, o Progress usa uma versão nojenta do SQL chamada SQL92, eu acho que não suporta IF
  6. lorenzi

    lorenzi Membro Participativo

    Opas acabamos de chegar nesta conclusao..... tentei rodar o select direto no progress e não rolou o IF mesmo...

Compartilhe esta Página