Quick Tips : Fields : Internalcalc X Calculated X Aggregate

Veja nesta Quick como trabalhar com Internalcalc X Calculated X Aggregate.

Olá galera, nesta Quick Tips, irei mostrar alguns dos recursos mais utilizados no ClientDatataSet, um dos melhores componentes que existem no Delphi.

ClientDataSet é um componente que armazena informações em memória, tornando assim o trafego na rede menor, onde podemos fazer alterações, inclusões, deleções, e ao terminar as mudanças, podemos de uma única vez mandar o Pack de dados para ser executado no Banco de Dados.

Além de podermos trabalhar com base de dados em XML, criar campos que não façam parte do Banco de Dados, este seria o objetivo desta Quick Tip, mostrar como trabalhar com campos Internalcalc, Calculated, Aggregate.

Vamos agora exemplificar cada um deles. Preparei aqui uma tabela com dois campos, Valor e Quantidade, conforme a figura a seguir:

Criando um campo Calculated

Selecione o CDS, com o botão direito e vá a Fields Editor. E depois adicione um Field (CTRL + N). Faça a seguinte configuração na janela abaixo:

Criando um campo InternalCalc

Selecione o CDS, com o botão direito e vá a Fields Editor. E depois adicione um Field (CTRL + N). Faça a seguinte configuração na janela abaixo:

Criando um campo Aggregate

Selecione o CDS, com o botão direito e vá a Fields Editor. E depois adicione um Field (CTRL + N). Faça a seguinte configuração na janela abaixo:

Terminamos a criação dos Fields e agora vamos fazer a programação para poder ver o funcionamento.

Iremos agora fazer a “Formula” que queremos utilizar nos Fields Calculate, InternalCalc. Selecione o CDS, e vá até o evento onCalcFields implemente o seguinte código :

procedure TFrmPrincipal.CDSCalcFields(DataSet: TDataSet); begin With DataSet do begin FieldByName('TotalCalculated').AsFloat := FieldByName('VALOR').AsFloat * FieldByName('Qtd').AsInteger; FieldByName('TotalInternalCalc').AsFloat := FieldByName('VALOR').AsFloat * FieldByName('Qtd').AsInteger; end; end;

Veja como ficaria se você adicionar os Fields Calculate e InternalCalc no DBGrid, e executar a aplicação podemos ver o resultado:

E para finalizarmos vamos configurar o Field Aggregate.

Nesta propriedade podemos colocar funções agregadas de SQL, assim como podemos fazer cálculos exemplo SUM((TOTALINTERNALCALC) + 10 ) * QTD. Qualquer expressão poderá ser feito nesta propriedade.

Pra exibir o conteúdo do valor TotalAggregate utilize o seguinte código :

procedure TForm1.FormCreate(Sender: TObject); begin Caption := CDS.FieldByName('TotalAggregate').AsString; end;

Observe que eu estou usando o AsString, pois o AsFloat, AsInteger, entre outros, ele irá dar o seguinte erro, certamente se for Integer mudará o final do erro, por exemplo.

Cannot access field 'TotalAggregate' as type Float.

Fico por aqui ate à próxima Quick Tips.

Um abraço

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados