Fórum AggregateField #373124

04/08/2009

0

tenho campos aggregatefield na minha consulta mostrando num grid.
com where no sql, qdo dou OPEN, a soma está tudo OK!
Mas na tela tem opção do usuário filtrar (em cache no clientdataset) pelo OnFilterRecord, qdo existe esse filtro os valores dos campos AggregateField não atualizam.
Alguém sabe o q posso fazer pra resolver isso?


Jperim

Jperim

Responder

Posts

04/08/2009

Vitor Rubio

jperim, é um campo agregado ou calculado?

Se for calculado use o tipo internalcalc ao invez de calculated field.

Não tenho certeza, preciso testar, mas acredito que se o agregate field for uma soma de um outro campo, um total, por exemplo, ele vai somar apenas os campos visiveis no cds. Então se você filtrar, ele vai somar menos parcelas.

Você tem duas opções: Trazer o total já somado do sql, o que pode ser um custo para o seu servidor de banco de dados, mas um custo a menos para o client. Ou você pode usar clonedataset e criar uma cópia em memoria de seu dataset. Assim você pode fazer calculos em um enquanto faz filtros em outro.


Responder

Gostei + 0

04/08/2009

Jperim

É um campo agregado.

Ele está trazento o Valor Total corretamente pela expression SUM().

O q estou querendo saber é se qdo vou filtrando o ClientDataSet pelo OnFilterRecord, esse campo vai sendo atualizado?

Pq comigo ele não está atualizando a soma.


Responder

Gostei + 0

04/08/2009

Vitor Rubio

Eu não sei qual dos dois eventos ocorre primeiro: o cálculo do aggregate ou o OnFilterRecord.

Se bem que dado esse problema, é capaz de o OnFilterRecord executar antes do cálculo. Mas para ter certeza use o debugger.

Tente usar a propriedade Filter e filtered := true.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar