Calculo de valores

Delphi

11/07/2008

Boa noite a todos.

Estou trabalhando no desenvolvimento de um aplicativo e estou utilizando o delphi 7 juntamento com o firebird 2.0.

Tenho 5 dbEdit.
Exemplo:
Valor1
Valor2
Valor3
Valor4
Total

Como faço para conforme vou digitando os valores nos primeiros campos e já ir mostrando o resultado no campo total.

obrigado.
Uelinton


Uelinton_reis

Uelinton_reis

Curtidas 0

Respostas

Marco Salles

Marco Salles

11/07/2008

a principio seria criar um campo calculado

Mas depende tb de qual os componentes de acesso você esta utilizando

se for DbExpress com ClientDataSet fica melhor ainda com o Internacall


GOSTEI 0
Uelinton_reis

Uelinton_reis

11/07/2008

[quote:3607503168=´Marco Salles´]a principio seria criar um campo calculado

Mas depende tb de qual os componentes de acesso você esta utilizando

se for DbExpress com ClientDataSet fica melhor ainda com o Internacall[/quote:3607503168]
-------------------------------------------------------------------------------------

Bom dia Marcos....

Cara estou utilizando os componentes (IBDataSet e IBDataBase) da guia Interbase.

Como devo fazer?

Obrigado.


GOSTEI 0
Marco Salles

Marco Salles

11/07/2008

Acho que voce deve ir no Editor de fields do IbDataSet (De Duploclick No componente )

Click com o Botçao direito e escolha a Opção New Fields

De Um Nome : Total
Escolha o Tipo : Currency
e em Field Type selecione a opção Calculed
De Ok
Pronto o campo calculado esta criado

Agora no Objeto Inspectos do IbDataSet na Guia de Eventos selecione
o Evento onCalcFields e digite o codigo abaixo

procedure TForm1.IBDataSet1CalcFields(DataSet: TDataSet);
begin
 dataset.FieldByName(´total´).AsCurrency:=
 dataset.fieldbyName(´valor1´).AsCurrency+
 dataset.fieldbyName(´valor2´).AsCurrency+
 dataset.fieldbyName(´valor3´).AsCurrency+
 dataset.fieldbyName(´valor4´).AsCurrency;
end;


e ppor fim no objecto inspector do IbDataSet coloque a propriedade
AutoCalcFileds em True ... (esta é a configuração padrão)

p:s esta propriedade pode ser habilitada e desabilidade conforme necessidade < para ganhar performa e evitar calculos desnecessários com o processador em determinadas situações

Espero ter entendido a sua duvida .. Não trabalho com o os componentes da paleta Interbase e nen estou com o delphi aqui para testar estas dicas
mas acredito que deva funcionar


GOSTEI 0
Uelinton_reis

Uelinton_reis

11/07/2008

[quote:ca4b74e14e=´Marco Salles´]Acho que voce deve ir no Editor de fields do IbDataSet (De Duploclick No componente )

Click com o Botçao direito e escolha a Opção New Fields

De Um Nome : Total
Escolha o Tipo : Currency
e em Field Type selecione a opção Calculed
De Ok
Pronto o campo calculado esta criado

Agora no Objeto Inspectos do IbDataSet na Guia de Eventos selecione
o Evento onCalcFields e digite o codigo abaixo

procedure TForm1.IBDataSet1CalcFields(DataSet: TDataSet);
begin
 dataset.FieldByName(´total´).AsCurrency:=
 dataset.fieldbyName(´valor1´).AsCurrency+
 dataset.fieldbyName(´valor2´).AsCurrency+
 dataset.fieldbyName(´valor3´).AsCurrency+
 dataset.fieldbyName(´valor4´).AsCurrency;
end;


e ppor fim no objecto inspector do IbDataSet coloque a propriedade
AutoCalcFileds em True ... (esta é a configuração padrão)

p:s esta propriedade pode ser habilitada e desabilidade conforme necessidade < para ganhar performa e evitar calculos desnecessários com o processador em determinadas situações

Espero ter entendido a sua duvida .. Não trabalho com o os componentes da paleta Interbase e nen estou com o delphi aqui para testar estas dicas
mas acredito que deva funcionar[/quote:ca4b74e14e]
-------------------------------------------------------------------------------------

A sua dica deu certo....

mas agora preciso guardar esta informação no banco de dados.
como faço isto agora....?


GOSTEI 0
Brunodsr

Brunodsr

11/07/2008

usa o evento before post do teu dataset.

exemplo:
Dataset.fieldbyname(´SeuCampo´).Value := Dataset.FieldByName(´CampoCalculado´).Value;


Espero ter ajudado


GOSTEI 0
Marco Salles

Marco Salles

11/07/2008

A sua dica deu certo.... mas agora preciso guardar esta informação no banco de dados. como faço isto agora....?


a principio pode fazer como o amigo sugeriu

usa o evento before post do teu dataset.

exemplo: Código: Dataset.fieldbyname(´SeuCampo´).Value := Dataset.FieldByName(´CampoCalculado´).Value;


apesar de se estar na contramão do campo calculado ...
que é um valor que pode ser obtido a qualquer momento sem ter que
ficar ocupando espaço fisico na Base de Dados , portando desnecessário


GOSTEI 0
Uelinton_reis

Uelinton_reis

11/07/2008

Bom dia a todos....

Agradeço a todos que me ajudaram nesta duvida...

Com ajuda de vcs consegui resolver.

Obrigado.

Uelinton


GOSTEI 0
POSTAR