é possivo usar case when desse modo

Delphi

18/08/2005

É Possivel usar case when , no fonte.

      SQL.Add(´select CODIGO,NOME,TESTE,´ +
              ´case TESTE                               ´ +
              ´when 1 then ´teste´                     ´ +
              ´when 2 then ´teste2´                   ´ +
              ´end as NOMETESTE                    ´ +
              ´from TESTE                               ´);


na query funciona, mas se jogar aspas, no fonte da erro..
Tem algum modo de fazer isso, sem colocar o sql na query


Lynx

Lynx

Curtidas 0

Respostas

Fknyght

Fknyght

18/08/2005

  SQL.Add(´select CODIGO,NOME,TESTE,´ + 
              ´case TESTE                               ´ + 
              ´when 1 then ´ + #39 + ´teste´  + 39 + 
              ´when 2 then ´ + 39 + ´teste2´ + 39 + 
              ´end as NOMETESTE                    ´ + 
              ´from TESTE                               ´); 




Faz assim


GOSTEI 0
Lynx

Lynx

18/08/2005

funcionou legal

Obrigado


GOSTEI 0
Lynx

Lynx

18/08/2005

Com inteiro vai legal, mas no caso com string ´A´ , ´B´ etc...

Como ficaria ?


porque com string precisa ser assim.

case NOME
when ´A´ then ´Baixado´
etc...

Tem como ?

Obrigado


GOSTEI 0
Lynx

Lynx

18/08/2005

resolvido,

Fica assim


              ´CASE PEDIDOS.SITUACAO                                      ´ +
              ´when ´#39´A´39´ then ´ + 39 + ´Aberto´     + 39      +
              ´when ´39´C´39´ then ´ + 39 + ´Cancelado´  + 39   +
              ´end as NOMESITUACAO                                           ´ +



GOSTEI 0
Lynx

Lynx

18/08/2005

Com ´´A´´ já funciona, mas para ficar mais legivel vou colar o código.
      SQL.Add(´select PEDIDOS.CODPEDIDO,                                  ´ +
              ´PEDIDOS.DATA,                                              ´ +
              ´PEDIDOS.VALORTOTAL,                                        ´ +
              ´PEDIDOS.SITUACAO,                                          ´ +
              ´CLIENTES.TIPCLIENTE TIPOCLIENTE,                           ´ +
              ´CLIENTES.NOME NOMECLIENTE,                                 ´ +
              ´SYSUSUARIOS.NOME NOMEVENDEDOR,                             ´ +
              ´FORMAPAGAMENTO.NOME NOMEFORMAPAGAMENTO,                    ´ +
              ´CASE PEDIDOS.SITUACAO                                      ´ +
              ´when ´#39 + ´A´ + 39´ then ´ + 39 + ´Aberto´     + 39     +
              ´when ´#39 + ´C´ + 39´ then ´ + 39 + ´Cancelado´  + 39     +
              ´end as NOMESITUACAO                                        ´ +
              ´from PEDIDOS                                               ´ +
              ´inner join CLIENTES on                                     ´ +
              ´PEDIDOS.IDCLIENTE = CLIENTES.IDCLIENTE                     ´ +
              ´inner join FORMAPAGAMENTO on                               ´ +
              ´PEDIDOS.IDFORMAPAGAMENTO = FORMAPAGAMENTO.IDFORMAPAGAMENTO ´ +
              ´inner join SYSUSUARIOS on                                  ´ +
              ´PEDIDOS.IDUSUARIO = SYSUSUARIOS.IDUSUARIO                  ´ +
              ´where DATA between :DATAINICIAL and :DATAFINAL             ´);



Funcionou Legal assim

Valeu


GOSTEI 0
Motta

Motta

18/08/2005

Outra solução e usar a function :

Quotedstr (ou Quotestr não sei o nome ao certo) , que poe uma stirng entre aspas

query.sql.add(´where x=´ = quotedstr(´x´));

...


GOSTEI 0
POSTAR