[firebase-br] Como Capturar SQL de um Campo ??

Luciano franca luapfirebird em yahoo.com.br
Qui Out 27 09:28:02 -03 2016


Eu não expliquei direito.Eu monto todo o SQL de uma query e dou um Open da Query depois da Query Aberta eu quero uma forma de mappear cada campo da mesmaPelo nome do campo eu preciso saber qual o comando SQL que formou o campo isso não é simples pois preciso fazer um Parse no codigo SQL inteiro para descobrir o comandoSQL que formou determinado campo sendo pode ser algo complexo como o exemplo que postei 

Coalesce(Case When (Trim(NF.N_CF) <> '') Then  NF.N_CF || ' ' End, '')  || Coalesce(Case When (Trim(NF.N_NFM) <> '') Then  NF.N_NFM || ' ' End, '') As CUPOM_NOTAFISCAL, 
talves eu não esteja sabendo buscar na internet qual técnica certa consegue fazer isso, ou se através das tabelas de sistema o Firebird consegue me informar isso. 

    Em Quinta-feira, 27 de Outubro de 2016 9:20, Gladiston Santana <gladiston em vidy.com.br> escreveu:
 

 dois dias e não achou o comando ALTER TABLE ?estranho, heim.
Se o que precisa é um campo calculado na tabela, é simples, veja esses exemplos:
ALTER TABLE PRODUTOS ALTER POSSUI_VINCULARES COMPUTED BY ((    CASE      WHEN EXISTS(SELECT 1 FROM PRODUTOS_VINCULARES WHERE PRODUTOS_VINCULARES.CODITEM=PRODUTOS.CODITEM)      THEN 'Sim'      ELSE 'Não'    END));      
ALTER TABLE PRODUTOS ALTER DIM_TEXTO COMPUTED BY ((  CAST((      LEFT(CAST(DIM_LARGURA as varchar(30)),10)||' X '||      LEFT(CAST(DIM_COMPRIMENTO as varchar(30)),10)||' X '||      LEFT(CAST(DIM_ALTURA as varchar(30)),10)||' '||      LEFT(DIM_UNIDADE,10)) as varchar(40))      ));
ALTER TABLE CV_PENDENCIAS ALTER DESBLOQUEIO_COM COMPUTED BY (      CASE        WHEN (DESBLOQUEIO_DATA>'01.01.1970')        THEN CAST((LEFT(CAST(DESBLOQUEIO_DATA as varchar(30)),10)||' por '||DESBLOQUEIO_USUARIO) as varchar(40))        ELSE 'Não desbloqueado'      END      );
Se não for isso, explica melhor.
Em 26 de outubro de 2016 20:54, Luciano franca <luapfirebird em yahoo.com.br> escreveu:

 Pessoal sei que talvez esse não seja o local certo mais já faz dois dias que procuro e não acho o que procuro no Google.
 eu precisa detectar o comando SQL necessario para gerar um Campo exemplo :
Coalesce(Case When (Trim(NF.N_CF) <> '') Then  NF.N_CF || ' ' End, '')  || Coalesce(Case When (Trim(NF.N_NFM) <> '') Then  NF.N_NFM || ' ' End, '') As N_CUPOM, 
Eu precisa fazer isso no Delphi não sei se existe algum comando que faça o firebird voltar que o campo ''N_CUPOM"  é formado pelo comando ::
Coalesce(Case When (Trim(NF.N_CF) <> '') Then  NF.N_CF || ' ' End, '')  || Coalesce(Case When (Trim(NF.N_NFM) <> '') Then  NF.N_NFM || ' ' End, '') 
Já procurei como SQL Parse porém não consigo encontrar nada que consiga fazer isso
Seria como dar um Split  porém se colocar a virgula ","   dá problema com o Coalesce  então não sei como fazer isso.
Alguém já passou por isso teria algum código milagroso para isso.   o Firebird faz isso internamente assim preciso fazer isso via código pelo Delphi.



   


Mais detalhes sobre a lista de discussão lista