[firebase-br] Novamente - Campos computados

Kleber Caneva kdcc em terra.com.br
Qui Maio 31 11:38:27 -03 2007


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 





Mais detalhes sobre a lista de discussão lista