Dúvida sobre campos calculados

Firebird

26/09/2007

Tenho uma dúvida envolvendo campos calculados. Quando o valor desse campo depende apenas de campos na mesma tabela do campo e/ou funções (internas ou UDFs) eu crio um campo calculado na própria tabela/consulta.

O problema costuma ocorrer quando o campo em questão depende de valores provenientes de outras tabelas. Um caso típico é em relações mestre-detalhe onde um campo na tabela mestre deve mostrar a soma total de um campo na tabela detalhe. Eu sempre resolvi isso fazendo um campo calculado no próprio Delphi, mas possui o incoveniente de não se atualizar automaticamente a medida que você trabalha nos registros detalhe (no caso de um formulário mestre-detalhe), já que esses campos só se atualizam ao mexer no dataset onde está o campo.

Por isso, gostaria de saber quais as soluções alternativas para esses casos: já pensei em, por exemplo, em criar o campo fisicamente na tabela e usar triggers na tabela detalhe para manter o campo atualizado.
Existe alguma maneira de se criar um campo calculado numa query/view que permita, por exemplo, obter o valor total de um campo em outra tabela (no caso teria todos os campos da tabela mestre e mais um calculado com a soma da tabela detalhe), de preferência sem precisar GROUP BY e similares?

Quais dessas soluções seria a mais adequada do ponto de vista de confiabilidade e performance?

P. S. Uso BDS 2006 e Firebird 2.0


Gandalf.nho

Gandalf.nho

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

26/09/2007

Ninguém?


GOSTEI 0
Armando.boza

Armando.boza

26/09/2007

eu acho que vc deve montar uma view.

crie uma procedure que faça todas as somas que vc necessita e crie uma view a partir da procedure.

acho que da certo


GOSTEI 0
Gandalf.nho

Gandalf.nho

26/09/2007

O problema é que essa consulta seria usada como origem de um formulário de manutenção e não sei se uma view baseada numa SP seria atualizável (num relatório, tudo bem).


GOSTEI 0
Gandalf.nho

Gandalf.nho

26/09/2007

Ninguém mais tem sugestões? Como vocês costumam resolver esse problema em que o campo totalizador fica no tabela master mas os valores a serem usados no cálculo na tabela detail, e de tal forma que esse campo totalizador vá se atualizando de forma visual no formulário enquanto se trabalha na tabela detail?


GOSTEI 0
Sremulador

Sremulador

26/09/2007

você já tentou acionar o on charger do mestre ???


GOSTEI 0
POSTAR