Instrução SQL sem usar CASE

Delphi

06/05/2006

Tenho uma aplicação aqui ainda em paradox, e preciso gerar um relatório onde a solução talvez fosse usando CASE na instrução SQL, porém como não tem case no paradox alguem poderia me dar uma sugestão de como faço isso?

A instrução SQL seria mais ou menos assim:
select a.registro, a.nome, 
  (select b.registro from dp34a B where b.cnpj=a.cnpj and b.registro=a.registro) as cat1,
 case cat1
   when 0 then ´-´
   else ´Ok´ as cat2,
from dp01a A
where a.cnpj=:cnpj
order by a.nome

Cujo objetivo seria identificar se existem um ou mais registros em DP34A cujo campo dp34a.registro seja igual a dp01a.registro. Caso existam um ou mais, preciso imprimir no relatório a palavra ´ok´ caso não exista nenhum registro correspondente será impresso ´-´

O relatório seria mais ou menos assim:

Nome                 Cat
------------------------
fulano de tal        ok
outro nome           - 
outro funcionario    -
ze mané              ok

O que poderiam me sugerir?


Aerreira

Aerreira

Curtidas 0

Respostas

Joaoshi

Joaoshi

06/05/2006

Colega,

Você poderia utilizar dois selects
select ....,´- ´ as cat2 from ... where cat1 = 0
union all
select ...., ´ok´ as cat2 from... where cat1 <> 0

ou utilizar no DataSet o OnGetText

Se não for nada disto me desculpe.

Espero ter ajudado.


GOSTEI 0
Aerreira

Aerreira

06/05/2006

select ....,´- ´ as cat2 from ... where cat1 = 0 union all select ...., ´ok´ as cat2 from... where cat1 <> 0


João, ajudas são sempre bem vindas, mas não consegui compreender seu raciocinio (acho que vc tb não entendeu o meu).

Basicamente o que preciso é: listando todos os funcionários em DP01A, se houver algum registro do funcionário na tabela dp34a o campo CAT do relatório deverá ser preenchido com OK. Se não houver nenhum registro do funcionário na tabela dp34a então no relatório o campo CAT deverá ser preenchido com ´-´.

Um exemplo de conteúdo das tabelas seria:

DP01A
001 João
002 Antonio
003 Maria
004 Pedro

DP34A
002 01/02/2004
004 15/03/2005

Com os dados acima, o relatório ficaria assim:

João -
Antonio Ok
Maria -
Pedro Ok


GOSTEI 0
Aerreira

Aerreira

06/05/2006

Ninguem se habilitar a solucionar esse problema?


GOSTEI 0
Rjun

Rjun

06/05/2006

Acho que com um campo calculado daria certo. Se categoria for igual a zero então ele retorna ´-´ senão retorna ´OK´.


GOSTEI 0
Aerreira

Aerreira

06/05/2006

Vou fazer alguns testes amanhã.


GOSTEI 0
POSTAR