AggregateField
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?
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
Curtidas 0
Respostas
Vitor Rubio
04/08/2009
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.
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.
GOSTEI 0
Jperim
04/08/2009
É 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.
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.
GOSTEI 0
Vitor Rubio
04/08/2009
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.
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.
GOSTEI 0