[firebase-br] Novamente - Campos computados

CPD (Borborema-Imperial Transportes Ltda) cpd em borborema.com.br
Qui Maio 31 13:40:16 -03 2007


Para alterar campos Computed é na verdade bem simples, vc cria um campos X
com o novo calculo e veridica qual domain foi criado para esse campo X, ex :
rdb$1811 e depois vai no DOMAIN do campo VL_TOTALPEDIDO, do seu problema e
altera para o mesmo do campo X, depois vc delete o campo X e pronto.

Alexandre.

----- Original Message ----- 
From: "Kleber Caneva" <kdcc em terra.com.br>
To: "Samuel Duarte Matos" <samuelmatos em cprinformatica.com.br>; "FireBase"
<lista em firebase.com.br>
Sent: Thursday, May 31, 2007 11:38 AM
Subject: Re: [firebase-br] Novamente - Campos computados


Não gosto de usar campos COMPUTED BY  exatamente por esse motivo.

Prefiro usar uma TG que atualize o campo. Quando precisa alterar é só mexer
na Tg.

[]´s

Kléber Caneva


----- Original Message ----- 
From: "Samuel Duarte Matos" <samuelmatos em cprinformatica.com.br>
To: <lista em firebase.com.br>
Sent: Thursday, May 31, 2007 9:17 AM
Subject: [firebase-br] Novamente - Campos computados


To precisando muito de uma solução para isso. Se não houver, tenho que tomar
outras providências.

Postei ontem, não obtive nenhuma resposta, nem mesmo pra dizer que ninguem
sabe, portanto, estou postando de novo. Talvez o Cantu possa me ajudar.

lá vai o Post

Olá a todos!

Estou utilizando FB 1.5.4

Meu problema é o seguinte:

Tenho um campo numa tabela, e este campo é computado.
Ex.:

O nome do meu campo é VL_TOTALPEDIDO
e ele é computado assim: VL_TOTALPRODUTOS + VL_ACRESCIMO - VL_DESCONTO

Até aí tudo bem, funciona tudo perfeitamente.
Tenho várias procedures no banco que utilizam este campo.
Aí é que surge o problema: Tenho que modificar este campo VL_TOTALPEDIDO, e
acrescentar um campo na "computação" dele. Ficaria assim: VL_TOTALPRODUTOS +
VL_ACRESCIMO - VL_DESCONTO + VL_OUTROSACRESCIMOS

O problema é que, como existem váaaaarias procedures utilizando o campo, não
consigo deletar o campo para criá-lo novamente. E nem alterá-lo, até onde eu
sei.

Com isso, tive a "brilhante" idéia de modificar as tabelas do sistema. Fiz o
seguinte SQL:

update rdb$fields f
set f.rdb$computed_source = '(VL_TOTALPRODUTOS + VL_ACRESCIMO - VL_DESCONTO
+ VL_OUTROSACRESCIMOS + VL_TOTALIPI)'
where f.rdb$field_name = (select rf.rdb$field_source
                          from rdb$relation_fields rf
                          where rf.rdb$field_name = 'VL_TOTALPEDIDO' and
                                rf.rdb$relation_name = 'PEDIDO');

Funcionou, de certa forma. Utilizando o IBExpert, quando eu vou na tabela
pedido, aparece o campo VL_TOTALPEDIDO com os campos computados, tudo
certinho, mas a SOMA real não bate, ou seja o campo que eu adicionei não
está sendo computado. Acredito que seja pq eu precisaria tb modificar o
campo rdb$computed_blr, que é de onde o FB pega os campos realmente.

Perguntas
1.Tem como fazer isso?
2. Não tem como eu alterar um campo computado através da cláusula ALTER
TABLE ALTER COLUMN?

Obrigado a todos
Samuel






Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: McAfee VirusScan / Atualizado em 30/05/2007 / Versão:
5.1.00/5042
Proteja o seu e-mail Terra: http://mail.terra.com.br/



----------------------------------------------------------------------------
----


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.472 / Virus Database: 269.8.4/825 - Release Date: 5/30/aaaa
15:03






Mais detalhes sobre a lista de discussão lista