Campo Aggregate somando novamente ao indexar
Bom dia a todos, li vários posts, mas não achei anda referente a isso.
Usando DBX, no ClientDataSet fiz um campo Aggregate que soma uma coluna com valores numeric.
Exibo os dados em uma DBGrid.
Uso o DataSet.Filter para filtrar minha pesquisa, nisso o campo Aggregate é atualizado.
Fiz uma rotina para indexar pelas colunas da grid.
Nesse ponto ele soma novamente ao valor que já tinha.
Exemplo
a soma de uma seleção foi de 20,00
se eu mudar a ordenação do campo ela fica 40,00
se mudar novamente ela fica 60,00
Pensei em zerar o valor dele antes de indexar, mas não encontrei como fazer isso. Até achei um tópico mas quem perguntou não chegou a lugar algum.
Grato
Usando DBX, no ClientDataSet fiz um campo Aggregate que soma uma coluna com valores numeric.
Exibo os dados em uma DBGrid.
Uso o DataSet.Filter para filtrar minha pesquisa, nisso o campo Aggregate é atualizado.
Fiz uma rotina para indexar pelas colunas da grid.
Nesse ponto ele soma novamente ao valor que já tinha.
Exemplo
a soma de uma seleção foi de 20,00
se eu mudar a ordenação do campo ela fica 40,00
se mudar novamente ela fica 60,00
Pensei em zerar o valor dele antes de indexar, mas não encontrei como fazer isso. Até achei um tópico mas quem perguntou não chegou a lugar algum.
Grato
Henrique Rodrigues
Curtidas 0
Respostas
Marcos Iwazaki
11/10/2012
isso é realmente estranho...
as vezes eu uso o aggregate tbm e funciona normal.
tenta fazer o seguinte. criar uma apliação nova liga com uma tabela bem simples com 3 registros.
e testa o agrregate nele...
se mesmo assim der erro...
eu não sei o que poderia ser, talvez a versão do delphi estar com bug.
se quiser depois de fazer este teste me passar esse projeto teste p eu debugar aqui.
flw.
as vezes eu uso o aggregate tbm e funciona normal.
tenta fazer o seguinte. criar uma apliação nova liga com uma tabela bem simples com 3 registros.
e testa o agrregate nele...
se mesmo assim der erro...
eu não sei o que poderia ser, talvez a versão do delphi estar com bug.
se quiser depois de fazer este teste me passar esse projeto teste p eu debugar aqui.
flw.
GOSTEI 0
Kelly Pavan
11/10/2012
Achaste alguma solução? Estou com esse mesmo problema e quase enlouquecendo...
GOSTEI 0
Renato Rubinho
11/10/2012
Kelly,
Não sei a solução ideal, mas o que faço para resolver isso é, antes de mudar a indexação, colocar um filter que não traga nenhum registro (Ex: COD_CLIENTE = 0 sendo que todos os COD_CLIENTES são superiores a zero), mudo a indexação e depois removo o filter.
Ao retornarem os registros após a remoção do filter parece que zera o aggregate e os valores ficam corretos.
Acredito que ao mudar a ordem, o aggregate se perde no reposicionamento dos registros.
Não sei a solução ideal, mas o que faço para resolver isso é, antes de mudar a indexação, colocar um filter que não traga nenhum registro (Ex: COD_CLIENTE = 0 sendo que todos os COD_CLIENTES são superiores a zero), mudo a indexação e depois removo o filter.
Ao retornarem os registros após a remoção do filter parece que zera o aggregate e os valores ficam corretos.
Acredito que ao mudar a ordem, o aggregate se perde no reposicionamento dos registros.
GOSTEI 0
Thiago Santana
11/10/2012
Bom Henrique tem que vê a forma como você está filtrando. Pois caso a filtragem não esteja sendo efetuada no objeto de consulta o campo calculado irá se perder nos valores após algumas consultas.
GOSTEI 0
Henrique Rodrigues
11/10/2012
Eu abandonei o filter, estou usando uma nova consulta SQL no SQLDataSet
GOSTEI 0