Calculo de valores

11/07/2008

1

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


Responder

Posts

11/07/2008

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


Responder

14/07/2008

Uelinton_reis

[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.


Responder

14/07/2008

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


Responder

14/07/2008

Uelinton_reis

[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....?


Responder

14/07/2008

Brunodsr

usa o evento before post do teu dataset.

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


Espero ter ajudado


Responder

14/07/2008

Marco Salles

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


Responder

15/07/2008

Uelinton_reis

Bom dia a todos....

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

Com ajuda de vcs consegui resolver.

Obrigado.

Uelinton


Responder