Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Foto:

Soma em DBGrid...???

  • Por favor, faça o login para responder
7 respostas neste tópico

#1 Sérgio_BR

Sérgio_BR

    Sérgio_BR

  • Membros
  • 44 posts

Postado 08 janeiro 2007 - 17:44

Meus amigos, boa tarde!

Minha grande dificuldade nesse momento é: Tenho uma tabela (vamos chamar de table1), com seis campos(Campo_A,Campo_B,Campo_C, Campo_D, Campo_E e Campo_F).
Eles se referm às despesas registradas mes a mes.
Em um dbgrid, posso ver todas elas, de Janeiro a Dezembro....
Como faço para somar todos os doze registros do Campo_A (e assim todos os demais campos)?
Devo criar outra tabela para armazenar apenas esses totais (sim, porque o usuário irá querer saber esses montantes, em um relatório)?
Devo colocar um DBEdit (seis ao todo) debaixo de cada coluna, e ao clicar um botão "Totais", cada DBEdit exibe o respectivo valor, ou criar outro form (linkado a essa nova tabela), para ter ali, apenas os totais?

Obrigado!
  • 0

#2 btovix

btovix
  • Membros
  • 28 posts

Postado 08 janeiro 2007 - 17:59

olá sérgio, veja bem... você pode criar uma querie para somar cada campo com a propriedade SUM seriam 6 queries pra fazer isso e daí colocar o resultado no final, ou mesmo usar o evento onGetText para ir somando esse valor, no caso do onGetText você criaria uma váriável para cada item e somaria ela dentro do evento de cada campo da query que chama esses valores.

espero ter ajudado...
abraço!
  • 0

#3 wvitorhugo

wvitorhugo
  • Membros
  • 33 posts

Postado 09 janeiro 2007 - 04:26

olá! pelo que eu intendi, a melhor solução para o problema seria voce criar um campo calculado na tabela, assim o resultado da soma seria somado ao exibir a tabela, automaticamente.
  • 0

#4 marcio.theis

marcio.theis
  • Membros
  • 5.382 posts

Postado 09 janeiro 2007 - 07:37

Umas das formas seria criar uma Query e monta o SQL usando o comando SUM, efetuando o SUM de todos os campos desejado no período desejado.
Se for para somente mostrar junto com o DBGrid pode também fazer usando SQL, ou então efetuando um while sobre a consulta somando os campos e atribuíndo em um TEdit.
Mas para o relatório você pode simplismente listar os itens e colocar um Summary, colocando um TQRExpr e colocando o comando de SUM sobre o campo desejado, assim vai somar tudo referente aquele campo que foi listado no relatório.
  • 0

#5 Sérgio_BR

Sérgio_BR

    Sérgio_BR

  • Membros
  • 44 posts

Postado 09 janeiro 2007 - 18:08

Meus amigos, acho que pirei....cheguei do trampo e corri para ver suas sugestões, ambas me parecem legais..desculpem-me, creio que meu cérebro está em pane...creio que há um limite até onde um novato em Delphi pode avançar sozinho, e eu acho que atingi esse limite....talvez seja pelo cansaço....sei lá....
Será que é pedir demais, para que um de vocês monte o código e me diga como usá-lo? :blush:
Para reforçar a idéia: cada coluna representa um tipo de despesa e no final haverá para cada tipo, doze registros e naturalmente ao final preciso saber o montante de cada coluna....
Será que é mesmo o caso de criar um campo calculado, pois a idéia é gravar cada montante na tabela e depois visualizá-los em um relatório?
Por favor, me ajudem, estou sem saida, amigos....e sem idéia também...

Muito Obrigado!

Sérgio.
  • 0

#6 marcio.theis

marcio.theis
  • Membros
  • 5.382 posts

Postado 09 janeiro 2007 - 20:48

Seria interessante então que você coloque as estruturas das tabelas, ainda os componentes que usa para acessar e o que você precisa, se possível dandos um exemplo, assim fica mais fácil para achar a solção...
  • 0

#7 Sérgio_BR

Sérgio_BR

    Sérgio_BR

  • Membros
  • 44 posts

Postado 10 janeiro 2007 - 19:46

Olá, Amigos, boa noite....

Bem, ai está o solicitado:

I - Mês (A)
2 - Ano(A)
3 - Agua($)
4 - Energia($)
5 - Aluguel($)
6 - Mat_Limp($)
7 - Xerox($)
8 - Lanche($)
9 - Sal_Past($)
10 - Alarme($)
11 - Aj_Limp($)
12 - Combustivel($)

Tabela Paradox, usando um TTable(tbDespMensal) e um Datasource(dsDespMensal).
Como não sei montar o SQL correto para esse caso, no form onde serão visualizados os resultados, ainda não adicionei um Query...
Os campos estão criados nessa ordem ai acima...
O que desejo é o seguinte, tomando por exemplo o campo 3:
A cada mês, o usuário lança o gasto com Água. E um form com grid (DespAnual) ele terá os gastos com água, referentes aos doze meses, certo? Então nesse grid, quem sabe em DBEdit colocado logo abaixo da coluna "Agua", ao clicar no botão "CalcularTotais", ele terá o resultado parcial (a soma de todos os registros até aquele momento) ou no final dos doze meses.
Isso se aplica com os outros nove campos...ele teria doze totais de despezas diferentes.
Uma só tabela basta? seria necessária a criação de outra apenas para os resultados?Acho que criar campo calculado não permitiria gravar os resultados para imprimir via Qreport...
E já que falamos em DBgrid, não nesse caso, tenho um dbgrid com SQL montado e me mostra os aniversariantes do mês e é claro, esse resultado da pesquisa não é gravado...Como faço para imprimir o resultado dessa pesquisa...????...não tenho esse código também..
E por último, tenho um form de cadastro com inserção de fotos que funciona bem, mas com o objeto Image.....achei que um DBEdit tornaria o form mais atraente...coloquei um e alterei o código....mas o Delphi me diz que a imagem não é um BitMap válido (claro, as imagens são Jpeg)
abri o OpenPicture Dialog e no filtro apaguei a referência à bitmap....não adiantou...como fazer para que ele funcione, ajustando à ideia do código abaixo:

procedure TfrmCadastro.btnInserirFotoClick(Sender: TObject);
begin
If OpenPictureDialog1.Execute then
tbMembros.Edit;
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
tbMembros.FieldByName('Foto').AsString:= OpenPictureDialog1.FileName;
if tbMembros.state in [dsedit,dsinsert] then
tbMembros.Post;

end;

Valeu, gente!!!

Um abraço!!

Sérgio
  • 0

#8 Hugo Slepicka

Hugo Slepicka
  • Membros
  • 1.615 posts

Postado 10 janeiro 2007 - 20:21

A Sql da query pode ser essa...
SELECT DISTINCT Ano, Sum(Agua), Sum(Energia), Sum(Aluguel), Sum(Mat_Limp), Sum(Xerox), Sum(Lanche), Sum(Sal_Past), Sum(Alarme), Sum(Aj_Limp), Sum(Combustivel)
FROM "DespMensal.db" 
Where Ano = '2006'
GROUP BY ANO

Claro que são necessárias lapidações, mas acho que o contexto é esse...

flw aew!!! :thumbsup:
  • 0