Soma em Grid
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
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
Harley
Curtidas 0
Respostas
Eduardo Silva.
08/01/2010
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!
GOSTEI 0
Harley
08/01/2010
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.
GOSTEI 0
Harley
08/01/2010
Resolvido,
Usei o Evento AfterPost do ClientDataSet e conseguir resolver.
GOSTEI 0