[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