Fórum Como fazer um campo Acumulativo? #274735
30/03/2005
0
Aí vai a terceira tentativa. Desse jeito vou acabar desistindo do DELPHI.
Estou usando ADO com Access e em uma tabela de despesas estou inserindo diariamente registros com valores. Gostaria de ver nesta tela um campo onde eu somo todos os registros e apresento o valor total.
Como Fazer?
Já tentei ONCALCFIELDS, Lendo toda a tabela e somando a variavel, mas nao funciona. Se alguem tiver um exemplo pratico agradeço
Alex
Alexsandro
Curtir tópico
+ 0Posts
30/03/2005
Aroldo Zanela
Apesar de faltar muitas informações para tentar demonstrar uma solução, farei um exemplo hipotético.
Tabela: DESPESAS
Colunas: VENCIMENTO(D), DESCRICAO(CHAR(40)), VALOR(Numeric,15,2)
Obtendo o total:
SELECT SUM(VALOR) AS TOTAL FROM DESPESAS
Portanto, é desnecessário criar um campo para manter totais.
Gostei + 0
31/03/2005
Alexsandro
Agradeço sua ajuda, mas a parte que define a soma até sei fazer. O problema é que não sei em que evento deveo chamar a Query para que os valores se mantenham sempre atualizados, seja depois de uma inclusão, exclusão ou alteração.
Agradeço se você me passar uma dica. Tentei Afterpost, afterinsert, afterdelete mas só tive problemas. Por isso pensei no ONCALCFIELDS, mas percebi que este evento executa um calculo POR REGISTRO e não PARA A TABELA INTEIRA.
oBRG.
Alex
Gostei + 0
31/03/2005
Kotho
crie um campo aggreggate, e para apresentar na tela, utilize um DBEdit.
Esta é uma alternativa que eu utilizo, e que funciona...
Gostei + 0
31/03/2005
Alexsandro
Não é que não fui com sua solução. É que não entendi como fazer. (: (Sou leigo em Delphi - apenas 1 mês).
Você poderia me ajudar me explicando com mais detalhes?
Meu caso em uma tela onde cadastro das despesas diárias de viagem tem uma subjanela onde mostro os totais gastos com:
- DINHEIRO
- CARTÃO
- CHEQUE
A Medida que o usuário vai incluindo novos registros desejo que estes campos sejam atualizados com o valor total das Despesas. Exemplo: Se até hoje o Total em Dinheiro é 1000 e entro com uma despesa de 300, logo depois da inclusão automaticamente este campo deveria ficar com R$1300,00. Se algum registro for excluido ou modificado que os valores mudem também. Note que preciso verificar o TIPO DE PAGAMENTO (Dinheiro, Cheque ou Cartão) ANTES DE FAZER A SOMA. por isso achei que seria melhor usar QUERIES.
Ficarei muito grato por qualquer ajuda pois este sproblema já está a mais de 5 dias e não consigo resolver.
Alex
Gostei + 0
31/03/2005
Kotho
1) incluir um novo campo no seu DataSet (não sei se é uma Query ou Table, mas tanto faz)... você deverá informar o nome do campo e depois clicar no Aggreggate.
2) Selecionando esse campo (que fica na parte inferior do FieldsEditor), ele possui a propriedade Expression... coloque SUM(NOME_DO_CAMPO).
3) Outra propriedade importante do campo é Active... sete para True.
4) Agora no DataSet, sete AggreggatesActive para True...
5) Inclua um DBEdit no form... e sete ReadOnly para True, e TabStop para False... e ligue-o ao campo Aggreggate
Acho que é só isso... se não funcionar alguma coisa... ou se não entendeu algum passo... poste que iremos explicar... ok? :D
Gostei + 0
01/04/2005
Kotho
1) Quais componentes você está utilizando??? E eu queria pedir desculpas, pois eu utilizo os componentes do DBExpress... e o campo Aggregate só tem no ClientDataSet, então você somente irá conseguir utilizar este recurso se o estiver utilizando...
Gostei + 0
05/04/2005
Aroldo Zanela
SELECT xCAMPO, SUM(VALOR) FROM xTABELA WHERE xCONDICAO <CHAVE> GROUP BY xCAMPO
Coloque no OnAfterScroll
FechaQuery;
Passa Parâmetros;
AbreQuery;
Por favor, vamos continuar nesta thread até a solução final deste assunto.
Gostei + 0
05/04/2005
Aroldo Zanela
Coloque a DDL (Estrutura da tabela) para que possamos ententer melhor.
Gostei + 0
05/04/2005
Anfm
Vc poderia chamar este evento no OnDataChange do datasource q vc está utilizando na tabela principal.
Gostei + 0
05/04/2005
Gandalf.nho
Duplicidade
[url]http://forum.clubedelphi.net/viewtopic.php?t=61107[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)