Soma em Grid

08/01/2010

1

Prezados Colegas

Preciso realizar calculos dentro de um dbrig.

Utilizo um clientdataset em memoria e tenho diversos registros.
São quatro campos: id : integer, ds : string, totaliza : string(S/N) e vl :
valor.
Atraves de um stringList faço uma carga inicial dos dados que estão em um
arquivo texto. O usario valida o campo valor e os altera caso necessário em
seguida clica em um botão que faz os calculos dos campos valor onde (totaliza)
com a flag = 'S' e localizando o registro a ser somado atraves das propriedades findkey.
Embora funcione, gostaria de eliminar esse botão e a medida que o usuario fosse alterando o campo
valor, o calculo fosse feito automaticamente, como uma planilha excel. tentei
colocar o codigo do botão em diversos eventos do grid ou do proprio
clientdataset, mas não consegui fazer funcionar.   na pratica o DBGrid esta assim   ID    DESCRIÇÃO   VALOR 1     CTA 1              soma CTA 2 + CTA 3   ----->          (TOTALIZAR = S) 2     CTA 2              10,00 3     CTA 3              Soma CTA 4 + CTA 5   ----->           (TOTALIZAR = S) 4     CTA 4              15,00 5     CTA 5              10,00     Alguem ja fez algo parecido ?

saudações
Responder

Posts

08/01/2010

Eduardo Silva.

Acho que a solução para o seu caso é criar um campo Agregate utilizando o GroupState.   Dê uma estudada nessa matéria sobre o ClientDataSet, na parte final tem o que vc precisa:   http://edn.embarcadero.com/article/29272   Outra solução seria utilizar o SQL, mas vc teria que criar um banco de dados para isso.   Boa Sorte! 
Responder

08/01/2010

Harley

Bastante interessante o exemplo, mas ele usa campo agregado, preciso que os valores sejam digitados e atualizados na mesma coluna. Os cálculos que preciso fazer, são formulas específicas por linha  de acordo com um identificador que existe em cada registro. quando clico no botão, pesquiso esses registros a serem calculados com o Findkey e faço o cálculo, O que eu gostaria de fazer é colocar esse codigo em um evento do grid ou do clientDaset ou mesmo do DataSource para ser executado. Só que testei em praticamente todos e não consegui. Se alguem puder me ajudar agradeco.
Responder

08/01/2010

Harley

Resolvido,   Usei o Evento AfterPost do ClientDataSet e conseguir resolver.
Responder