Select iif dentro do Delphi
Boa tarde pessoal. Eu estou com o seguinte problema: Eu tenho na minha base de dados uma tabela que contém uma coluna chamada PRIORIDADE. A PRIORIDADE é do Tipo INTEGER e pode receber valores de 0 até 4 sendo 0 para "Crítica", 1 para "Alta, 2 para "Média", 3 para "Normal" e 4 para "Planejada".
No Delphi: Eu tenho uma IBQuery que faz um select nessa coluna PRIORIDADE. " select s.prioridade from servicos s ".
Daí no evento OnClick do meu butPesquisar eu faço o seguinte:
1º - Passo Close para a IBQuery.
2º - Limpo o SQL dela.
3º - Adiciono o SQL que eu necessito: SQL.Add('select iif(s.prioridade = 0, '+QuotedStr('Crítica')+', iif(s.prioridade = 1, '+QuotedStr('Alta')+', '.................... from servicos s);
OBS. Os "pontos" indicam que eu continuei a lógica do SQL até o final corretamente.
4º - Abro a IBQuery
5 - Neste passo era para a minha Grid receber os valores do select, porém eu me deparo com o seguinte problema: O Tipo do meu dado no banco é do tipo Integer e eu preciso exibir na Grid um valor do tipo String.
OBS: O Delphi reclama de "Dynamic SQL Error. SQL error code = -104. Token unknown - line 2, column 31. iif."
Já tentei várias coisas e não consegui. Se alguém puder me ajudar eu fico agradecido.
Uso Delphi XE e Firebird
No Delphi: Eu tenho uma IBQuery que faz um select nessa coluna PRIORIDADE. " select s.prioridade from servicos s ".
Daí no evento OnClick do meu butPesquisar eu faço o seguinte:
1º - Passo Close para a IBQuery.
2º - Limpo o SQL dela.
3º - Adiciono o SQL que eu necessito: SQL.Add('select iif(s.prioridade = 0, '+QuotedStr('Crítica')+', iif(s.prioridade = 1, '+QuotedStr('Alta')+', '.................... from servicos s);
OBS. Os "pontos" indicam que eu continuei a lógica do SQL até o final corretamente.
4º - Abro a IBQuery
5 - Neste passo era para a minha Grid receber os valores do select, porém eu me deparo com o seguinte problema: O Tipo do meu dado no banco é do tipo Integer e eu preciso exibir na Grid um valor do tipo String.
OBS: O Delphi reclama de "Dynamic SQL Error. SQL error code = -104. Token unknown - line 2, column 31. iif."
Já tentei várias coisas e não consegui. Se alguém puder me ajudar eu fico agradecido.
Uso Delphi XE e Firebird
Marlon Minotti
Curtidas 0
Respostas
Joel Rodrigues
26/09/2014
Aparentemente tem algum erro no SQL. Você já tentou executar essa instrução diretamente no Firebird?
GOSTEI 0
Marlon Minotti
26/09/2014
Sim, e funciona perfeitamente.
GOSTEI 0
Marlon Minotti
26/09/2014
E tem mais uma coisa:
Na minha Query está o mesmo select, idêntico.
Quando eu inicio o Sistema a minha GRID vem com os valores que eu passo no IIF, "Critica", "Alta" e os demais.
Mas quando eu faço uma nova pesquisa onde eu limpo minha grid e passo o SQL novamente, ele me dá erro no IIF. Eu vou conferir letra por letra, mas eu já vi altas vezes e não identifiquei erro.
Na minha Query está o mesmo select, idêntico.
Quando eu inicio o Sistema a minha GRID vem com os valores que eu passo no IIF, "Critica", "Alta" e os demais.
Mas quando eu faço uma nova pesquisa onde eu limpo minha grid e passo o SQL novamente, ele me dá erro no IIF. Eu vou conferir letra por letra, mas eu já vi altas vezes e não identifiquei erro.
GOSTEI 0
Marlon Minotti
26/09/2014
Amigo, mil desculpas, no final do meu código eu coloquei um ShowMessage(SQL.Text) e vi que estava faltando uma vírgula perdida la no meio. O Problema era comigo mesmo.. kkkkkkkkkkkkkkkkkkkk Que vergonha :D
Mas muito obrigado hehehe
Mas muito obrigado hehehe
GOSTEI 0
Deivison Melo
26/09/2014
finalizando o tópico!
GOSTEI 0