[firebase-br] Novamente - Campos computados
Samuel Duarte Matos
samuelmatos em cprinformatica.com.br
Qui Maio 31 09:17:34 -03 2007
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
Mais detalhes sobre a lista de discussão lista