Somar determinado campo da uma tabela

Delphi

12/02/2004

Olá pessoal estou com um pequeno problema como somar um determinado campo de um tabela e o resultado em outro campo

Seguinte: uso o delphi 6 e minha tabela e paradox

Na minha tabela (reccond) eu tenho os campos código, apto, ref, valor desconto, TOTAL

O que eu queria era somar todos o valores do campo “TOTAL” e mostrar o resultado em um determinado dbedit12 que corresponde ao campo “TOTALGERAL1” na minha tabela

Obs. Sou iniciante no caso da dica em SQL gostaria de saber detalhes sobre o que colocar na propriedade SQL da query tipo: select *from tabela

E o código em que evento do dbedit12
Tipo: se for no onexit, onenter,oncreate etc....

procedure TF_rectaxa.dbedit12enter(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;

Já pesquisei no fórum, tem algumas coisas falando sobre isso, mais tudo muito vago e incompleto

Agradeço aos Veteranos do Delphi, e aos iniciantes também que já tenha passado por isso e puder me ajudar


Wagner

Wagner

Curtidas 0

Respostas

Sremulador

Sremulador

12/02/2004

acho que deve ser assim
Select Sum(código apto, ref, valor, desconto) as total


GOSTEI 0
Wagner

Wagner

12/02/2004

Não entendi bem ou tambem não expliquei direito,

eu quero apenas somar os valores do campo TOTAL
E quero tambem o codigo a ser colocado no evento
Por favor se puder leia novamente o meu topico


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

1)Voce Quer Apenas Somar Os Valores Do Campo Total ????
2) Voce Quer o Código a Se Colocado No Evento ???
3)Voce Quer Mostrar o Resultado Em Um DbEdit ???
4)Voce Quer Saber Qual O Evento Do DbEdit ???

Vamos Responder as Perguntas Sem Que as Mesmas Estejam Em Ordem.

3) É Melhor Voce Escolher Um Edit Para Mostrar o Resultado e Não Um DbEdit

4) O Evento É Voce Que Escolhe. Qual o Momento Da Sua Aplicação Que Voce Quer Mostrar a
Soma.? Pode Ser Na Abertura Do Form (Evento OnShow) , Pode Ser No Envento On Click Do
Botão Etc... A Hora Que Voce Deseja Mostrar a Soma No Edit Não Necessariamente Está
Relacionado a Um Evento Do Edit. Então Vamos Determinar Que Seu Projeto Tenha Um Botão
Chamado Somar.....

1)e 2) Respondido Simultaneamente....

Inicialmente Insira Um Query e Um DataSource No Form...Ligue-os Como Se Estivesse Fazendo Como No Componente Table... Há Porem Um Diferença Crucial. No Table tem a Propiedade Table1.Name , O Query Não. Por Sua Vez Ele Tem a Propiedade Sql, Como Voce Mencionou Anteriormente. Então Vamos Fazer Em Duas Etapas.

1)No Sql Do Query Escreva : Select *From NOMEDASUATABELA . OK
2)Na Propiedade Active Do Query Coloque Em True . Ok
3)Veja Se Não Deu Nenhuma Mensagem De Erro. Se Ocorreu é Porque Houve Erro No Passo 2
4)Se OK No Passo 3 No Evento On Show Do Form Ou Num
Evento Onclick Do Botão Somar Escreva o Seguinte Código

procedure TForm1.FormShow(Sender: TObject);
var
Soma:Integer;
begin
Query1.Close;
Query1.SQL.Clear;
query1.SQL.Add(´Select Sum(Total) TotalGeral1 From Nome_Tabela´);
Query1.Prepare;
query1.open;
Soma:=Query1.FieldByName(´TotalGeral1´).AsInteger;
Edit1.Text:=IntToStr(Valor);
end;

Obs) o Campo Total Deve Ser Numérico

Obs) Não PRECISSA GUARDAR O RESULTADO EM NENHUM CAMPO DA TABELA,POIS ESTE RESULTADO É UNICO E VOCE TEM ACESSO A ELE A QUALQUER HORA... AGORA SE VOCE QUER GUARDAR NA TABELA A SOMA PASSO A PASSO (LINHA POR LINHA) DO CAMPO TOTAL, AÍ JÁ É OUTRA HISTÓRIA E NÃO É COM A FUNÇÃO SUM() QUE SE RESOLVE ISTO

5) Teste e Nos Comuinique Do Resultado


GOSTEI 0
Aavanco

Aavanco

12/02/2004

Wagner,

De uma olhada na Matéria Agregates no ClientDataSet do Guinther Pauli no endereço http://www.clubedelphi.com.br/portal/
Achei muito boa e limpa a solução da Matéria e eu acho que é bem o que você está precisando.


GOSTEI 0
Wagner

Wagner

12/02/2004

Primeiro gostaria de agradecer a atenção de todo, valeu mesmo pelas dicas postadas, :D
Aavanco, não encontrei o que eu queria onde você indicou, mais acabei achando alguma coisa falando sobre usercontrol que eu também estava atrás..valeu... :D

Grande Marcos Sales, você como sempre resolvendo meus problemas, funcionou perfeitamente. So uma questão como faço para ficar como o valor do edit de 200 para 200,00 a direita do edit.
Tentei, edit1 := formatfloat (#,......mais não me lembro do resto :lol:

Estou como outro problema, não sei se abro outro tópico ou resolvermos por aqui mesmo. :lol:
Seguinte:

Nesta mesma tabela o que eu queria também era fechar o mês informar a data de 01/01/2004 a 31/01/2004 e me mostrar o resultado da soma do campo TOTAL da tabela daí eu fechava o mês nenhum valor mais entraria nesse mês e jogar par um relatorio
Ah! quando eu puder ficar mais tempo conectado vou te manda aquele projeto :wink:


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Fico Feliz Em Ter-lo Ajudado . Vamos ao Segundo Passo. 1) Quanto a Formatação Tente a Instrução :edit1.text:=formatfloat(´#,0.00´,Soma)+´ R$´; 2) Para Somar Para Uma Data Específica Voce Tem Que Ter Um Campo Data Na Sua Tabela.. Voce Diz : &8220;Na minha tabela (reccond) eu tenho os campos código, apto, ref, valor desconto, TOTAL Na minha tabela (reccond)&8221;.Como Podemos Notar ESTA FALTANDO O CAMPO DATA, Na Sua Tabela. O Campo Data é o CAMPO ONDE NOS IREMOS DETERMINAR UMA CONDIÇÃO&8221;. Sem Este Campo Acredito Não Ser Possível Uma Seleção Por Data. Acrescente Este Campo e nos Comunique , Falei...


GOSTEI 0
Wagner

Wagner

12/02/2004

Ops! Esqueci de colocar eu tenho um campo na tabela apos ref. dt.pagamento

Fica assim oh!

Codigo
apto
ref
dt.pagamento
taxa
desconto
total

Ah! quanto aquele codigo, não deu certo
edit1.text:=formatfloat(´#,0.00´,Soma)+´ R$´; 2)

Fim de semana esta começando estamos aqui

um abraço


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Fico Feliz Em Ter-lo Ajudado . Vamos ao Segundo Passo. [color=red:7e1f61e2a7]1) [/color:7e1f61e2a7]Quanto a Formatação Tente a Instrução :edit1.text:=formatfloat(´#,0.00´,Soma)+´ R$´; ........... [color=red:7e1f61e2a7]2) [/color:7e1f61e2a7]Para Somar Para Uma Data Específica Voce Tem Que Ter Um Campo Data Na Sua Tabela.. Voce .......
Note Que o 2 Não Faz Parte Da Instrução De Formatação . Realmente Da Maneira Que Escrevi Deu Para Confundir...

Istrução Correta: edit1.text:=formatfloat(´,0.00´,Soma)+´ R$´;

Obs:) Quanto a Outra Dúvida Daqui a Pouco Eu Respondo.


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Instrução Correta: edit1.text:=formatfloat(´#,0.00´,Soma)+´ R$´;

Vamos a Segunda Parte :´Nesta mesma tabela o que eu queria também era fechar o mês informar a data de 01/01/2004 a 31/01/2004 e me mostrar o resultado da soma do campo TOTAL da tabela daí eu fechava o mês nenhum valor mais entraria nesse mês e jogar par um relatorio ´.etc.

Inclua No Seu Form Dois MaskEdit, Eles Serão Usados Para Informar o Período Que Voce Quer Efetuar a Soma. Pode Ser No Inicio e Fim Do Mes
Como Qualquer Outra Data...Pode Se Criar Tambem Uma Rotina Para Incluir a Data Inicio Do mes Corrente e Fim Do Mes Corrente Automaticamente No MaskEdit. Isto Porém é Outra História....Vamos ao Código:
Num Evento Qualquer( Desde Que os Valores Das Datas Estejam Previamente Definidos) Escreva O Seguinte Código:

var
Soma:Currency;
Begin
Query1.Close;
Query1.Sql.Clear;
query1.SQL.Add(´Select Sum(Total) TotalGeral1 From Nome_Tabela´);
Query1.Sql.Add(´Where dt.pagamento >= :DataInicial´);
Query1.ParamByName(´DataInicial´).Asdate:=StrTodate(MaskEdit1.Text);
Query1.Sql.Add(´and dt.pagamento <=:DataFinal´);
Query1.ParamByName(´DataFinal´).Asdate:=StrTodate(MaskEdit2.Text);
Query1.Prepare;
Query1.Open;
Soma:=Query1.FieldByName(´TotalGeral´).AsCurrency;
edit1.text:=formatfloat(´#,0.00´,Soma)+´ R$´;
end;

Obs: O Campo Total é Do Tipo Currency :!: :!: :!:

Para Imprimir Num Relatório. Já Fizemos Isto Anteriormente, Onde Nos Usamos Uma Seleção Por Data...Para Imprimir Num Relatório, Alem Da Soma Os Outros Campos Da Tabela , Voce Deve Ter Um Outro Query Com As Mesmes Condições Do Query 1. A Exceção Ocorre Na Linha Do Select: Para O Query 2 No Mesmo Evento Escreva:

//ESCREVER NO MESMO EVENTO

Query2.Close;
Query2.Sql.Clear;
query2.SQL.Add(´Select *From Nome_Tabela´);
Query2.Sql.Add(´Where dt.pagamento >= :DataInicial´);
Query2.ParamByName(´DataInicial´).Asdate:=StrTodate(MaskEdit1.Text);
Query2.Sql.Add(´and dt.pagamento <=:DataFinal´);
Query2.ParamByName(´DataFinal´).Asdate:=StrTodate(MaskEdit2.Text);
Query2.Prepare;
Query2.Open;
end;

[color=red:cfe4a64690]O Que Voce Deve Levar Para O Relatório :?: ..Os Campos Definidos Pela QUERY2, O PERIODO DEFINIDOS PELOS MASKEDIT(Isto Nos Ja Fizemos) E O VALOR DO EDIT1 (QUE RECEBEU A SOMA)

obs importante:Se Voce Quiser Mostrar O Resultado Previamente Num DBGRID , Deve Incluir Um DataSource e Linka-lo Ao QUEREY2 E NÃO AO
QUERY1....[/color:cfe4a64690]

Finaliso , Nada Deve Dar Erro...Esta Tudo Conforme O Combinado...A Semana Esta Começando :lol: , Mas Acaba Rápido :cry: Falei....


GOSTEI 0
Wagner

Wagner

12/02/2004

Marco desculpe as minhas perguntas, deve ser falta de segurança em mim mesmo :lol:

veja so!

Criar 2 editmask no forma :?: no form que eu já estou usando para receber o total geral :?:

Criar em qualquer evento aquele codigo :idea: no evento do form :?:
Já tenho uma query1 para o total geral da dica anterior uso essa mesma query ou tenho que inserir outra :?:


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Marco desculpe as minhas perguntas, deve ser falta de segurança em mim mesmo :lol: veja so! Criar 2 editmask no forma :?: no form que eu já estou usando para receber o total geral :?: Criar em qualquer evento aquele codigo :idea: no evento do form :?: Já tenho uma query1 para o total geral da dica anterior uso essa mesma query ou tenho que inserir outra :?:


1) Na Verdade é Criar Dois MaskEdit No Form Que Voce Está Usando Para Calcular O TTTALGERAL1. É Onde Voce Vai Inserir as Datas. Esta Inserção Pode Ser Feita Manualmente Ou Automaticamente...

2)Vamos Começar No Evento Onclick De Um Botão... Para Criar Num Evento Do Form Voce Tem Que Estar Com as Datas Iniciais e Finais Pre-Selecionadas. Aí Voce Depende De Uma Rotina Para Estas Datas. Como Voce Ainda Não Tem Essa Rotina, Vamos Colocar o Código No Evento OnClick De Um Botão...

3)Voce Tem Que Ter São Dois Query... Query1 e Query2... O Código De Ambos Devem Neste Exemplo Específico Estarem No Mesmo Evento e Terem as Mesmas Condições(DataInical e DtaFinal Iguais)...Se Voce Não Quiser No Relatorio Os Outros Campos Da Tabela, Não Precisa De Dois Querys. MAS SE VOCE QUISER UM RELATÓRIO COMPLETO, É RECOMENDAVEL USAR DOIS QUERYS

4)Não Tem Que Pedir Desculpa Por Perguntar... Tem Que Fazer Dar Certo. Eu Só Fico Chateado Quando Dá Errado :( ... Para Não Dar Errado Tem Que Tirar ás Dúvidas :idea: ... Mais Alguma :?:


GOSTEI 0
Wagner

Wagner

12/02/2004

:D Grande Marco vamos por parte, a 1º parte funcionou legal.
So uma duvida como faço nesse codigo ou de uma outra forma preparar os meus Maskedit´s para ___/___/_____

procedure TF_rectaxa.BitBtn12Click(Sender: TObject);
var
Soma:Currency;
Begin
Query1.Close;
Query1.Sql.Clear;
query1.SQL.Add(´Select Sum(Total) TotalGeral1 From reccond´);
Query1.Sql.Add(´Where datapag >= :DataInicial´);
Query1.ParamByName(´DataInicial´).Asdate:=StrTodate(MaskEdit1.Text);
Query1.Sql.Add(´and datapag <=:DataFinal´);
Query1.ParamByName(´DataFinal´).Asdate:=StrTodate(MaskEdit2.Text);
Query1.Prepare;
Query1.Open;
Soma:=Query1.FieldByName(´TotalGeral1´).AsCurrency;
edit1.text:= ´ R$´ + formatfloat(´#,0.00´,Soma);
end;

Ate aqui tudo bem.

So não entendi bem a 2º parte onde voce escreveu

[color=red:681374d1c3]Para Imprimir Num Relatório. Já Fizemos Isto Anteriormente, Onde Nos Usamos Uma Seleção Por Data...Para Imprimir Num Relatório, Alem Da Soma Os Outros Campos Da Tabela , Voce Deve Ter Um Outro Query Com As Mesmes Condições Do Query 1. A Exceção Ocorre Na Linha Do Select: Para O Query 2 No Mesmo Evento Escreva:

//ESCREVER NO MESMO EVENTO

Query2.Close;
Query2.Sql.Clear;
query2.SQL.Add(´Select *From Nome_Tabela´);
Query2.Sql.Add(´Where dt.pagamento >= :DataInicial´);
Query2.ParamByName(´DataInicial´).Asdate:=StrTodate(MaskEdit1.Text);
Query2.Sql.Add(´and dt.pagamento <=:DataFinal´);
Query2.ParamByName(´DataFinal´).Asdate:=StrTodate(MaskEdit2.Text);
Query2.Prepare;
Query2.Open;
end; [/color:681374d1c3]


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

1) Para Preparar MaskEdit elecione a Porpiedade EditMask Do Objeto MaskEdit. Abre o IMPUT MASK EDITOR... Selecione DATE ...LOGO A SEGUIR Complete o Código Do Imput Mask Onde Previamnte Esta Inscrito : !99/99/00;1;_ Por !99/99/9999;1;_ e Desmarque a Opção
Save Literal Caracters.. No Fim o ImputMask Deve Ficar Com Esta Cara:
[color=red:57e6b1bc26]!99/99/9999;0;_[/color:57e6b1bc26]


2) Tente Fazer O Seguinte. Neste Form Coloque Um DbGrid e Um DataSource e Link o DataSource No Query1 e O DbGrid1 No DataSource...
Selecione a Propiedade DatabaseNames Do Query e Na Sua Propiedade Sql
Digite : Select *From reccond´.. Ative a Propiedade Active Do Query e Veja O Acontece. Se Der Tudo Certo Rode o Aplicativo e Me Comunique O Que Vai Ocorrer Na Execução Do Aplicativo..Estou Aguardando


GOSTEI 0
Wagner

Wagner

12/02/2004

Ops! :lol: Eu tinha esquecido dessa propriedade

Valos Lá:

O que aconteceu é que esta mostrando no dbgrid so valor Totalgeral,
Era isso mesmo que era para acontecer :?:


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Seu Relátorio Só Vai Ter o Valor Total :?: E Os Registros Dos Outro Campos. Voce Não Vai Querer Apresenta-los :?:


GOSTEI 0
Wagner

Wagner

12/02/2004

Cara...Legal essa maneira :D

:cry: Desculpe a minha falha voce me perguntou isso mais atras e eu não te respondi, e o seguinte: Eu tenho na tabela os campos

COD
APTO
REF
DATAPAG
VALOR
DESC.
TOTAL
TOTALGERAL

Com ´valor´ e ´total´ individual (logico) e depois a soma de todos os totais como voce esta me ensinando a fazer ´totalgeral1´

Vai mundar muita coisa, da muito trabalho se no relatorio mensal sair todos os dado menos o COD. :lol:


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Então. Se Voce Quiser Que Os Registros Dos Outros Campo Aparecem No Relatório Uma Maneira De Fazer Isto é Usando Simultaneamente O Query2...Lembrando Que a SOMA REALIZADA PELO QUERY1 NÃO É ESPECIFECAMENTE PARA O RELATÓRIO, MAS SIM PARA MOSTRAR EM UM EDIT DO FORM....Porque Estou Lembrando Isto :?: Porque Existe No QrReport o Componete QrExp Que Calcula A Soma Campo a Campo De Uma Coluna e Mostra o Resultado No Relatório...Então Para Que Fazer a Soma :?:
Porque Esta Função é Específica Para o Relatório e Com Certeza Deve Ser Bem Mais Demorada Que Uma Instrução Sql...Alguma Dúvida a Mais :?:


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Achei a Última Mensagem Com Dúvida Então Vou Redigir Novamente:

Se Voce Quiser Que Os Registros Dos Outros Campo Aparecem No Relatório Uma Maneira De Fazer Isto é Usando Simultaneamente O Query2...
Lembrando Que a SOMA REALIZADA PELO QUERY1 NÃO É ESPECIFECAMENTE PARA O RELATÓRIO, MAS SIM PARA MOSTRAR EM UM EDIT DO FORM....

Porque Estou Lembrando Isto :?: Porque Existe No QrReport o Componete [color=red:a9bcc18da2]QrExp [/color:a9bcc18da2]Que Calcula A Soma Campo a Campo De Uma Coluna e Mostra o Resultado No Relatório...

Então Para Que Fazer a Soma Com o Query :?:
Porque o Componete QrExp é Específica Para o Relatório e Com Certeza Deve Ser Bem Mais Demorada Que Uma Instrução Sql...

Mais Alguma Dúvida :?:


GOSTEI 0
Wagner

Wagner

12/02/2004

Bom, Não entendi bem porque meus relatorios são basicos, o mais complicado que fiz foi aquele com filtro que voce me ensinou :cry:

Na realidade eu queria gerar um relatorio..não sei qual a melhor maneira


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Bom, Não entendi bem porque meus relatorios são basicos, o mais complicado que fiz foi aquele com filtro que voce me ensinou :cry: Na realidade eu queria gerar um relatorio..não sei qual a melhor maneira


Observe Wagenr Que as Instruções Do QUERY2 Neste Exemplo São Identicas Daquele Query Do Relatório Que Nós Fizemos Juntos Há Um Tempo Atrás..(OBSERVE QUE É O MESMO FILTRO).....O Relátório Pode Ser O mesmo Que Voce Fez a Unica Diferença é Naquele Exemplo Voce Usava Nos QrLabel O Conteudo Dos MaskEddit Para Mostrar o Intervalo,
Neste Novo Exemplo Além Do Conteúdo Dos MaskEdit Voce Deve Levar Também o Conteudo Do Edit1 Que Representa a Soma Dos Registros Neste Intervalo De Tempo....
Vamos Fazer o Seguinte Para Fechar Bem o Domingo...Monte Um Relatório e Comunique o Que Esta Ocorrendo...Lembre-se Que as Quatro Horas Tem VASCÃO X flamenguinho , Então Maos a Obra


GOSTEI 0
Wagner

Wagner

12/02/2004

Pronto

Criei um form chamado relformresumo com

Quickrep1
page header
title
detail
page footer

Enquanto aquardo vou colacar outro topico


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Voce Ja Fez Um Relaório Antes....Este Relatório é Igual Aquele Outro.Coloque os Compos Que Voce Quer Que Apareça. E Rode e me Comunique Dos Resultado..


GOSTEI 0
Wagner

Wagner

12/02/2004

O que estou fazendo de errado? o que estou esquecendo? :cry:

Associei o quickrep1 ao Query1
Coloquei todos os QrDBtext relacionados aos campos que eu queria exebir e Associando ao Query1

Sei que estou esquecendo ou errando alguma coisa :cry: O que?


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Mas o Que Esta Acontecendo :?: Escreva Em Detalhes :!: Náo Rodo :?: , Não Compilo :?: O Que Aconteceu :?:


GOSTEI 0
Wagner

Wagner

12/02/2004

Ops! Desculpe-me a falta de detalhes

Rodou sem erros mais no relatorio não apresenta nada

Criei um botão Imprimir
relformresumo.quickrep1.preview

E como disse associei o quickrep ao [color=red:4f1344f6c2]query1[/color:4f1344f6c2]
e os QRDBtext aos respectivos campo que eu quero ligado ao [color=red:4f1344f6c2]query1[/color:4f1344f6c2]


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Wagner[color=red:c811dd29d9]. Desde o Início Eu Estou Lhe Tentando Falar Isto.[/color:c811dd29d9]..Voce Não Vai Conseguir Imprimir..Não Aparece Nada. Eu Já Suspeitava Que Isto Fosse Ocorrer, Por Isto Eu Insiste Que Voce Tentasse Em Montar o Relatóroi.
Para Solucionar Isto Tem Várias Maneiras. Uma Delas é Colocar Neste Form Um QUERY2 e Escrever o Mesmo Código Que Foi Inscrito Para o Query1, Com Exceção Da Instrução Select, Como Eu Ja Lhe Disse Anteriormente....MAS ATENÇÃO , NO RELATÓRIO VOCE DEVE CONFIGURAR TUDO PARA O QUERY2 E NÃO MAIS PARA O QUERY1...


GOSTEI 0
Wagner

Wagner

12/02/2004

Não estou conseguindo responder


GOSTEI 0
Wagner

Wagner

12/02/2004

Ufa! Não estava conseguindo mais resposder aos topicos não sei porque. Mandei uma mensagem para voce recebeu?


GOSTEI 0
Marco Salles

Marco Salles

12/02/2004

Wagner Voce Me Enviou Uma M.P Com O Seguinte Conteúdo:
´Grande Marco Obrigado pela sua atenção e paciência sinceramente eu agradeço mesmo, desculpe-me por essa falha, voce esta realmente dando mais uma vez um passo-a-passo para resolver esse problema eu que estou deixando passar alguns detalhes, talves seja ansiedade. Bom mais agora deu tudo certo o que eu queria já esta saindo no relatorio menos o valor total que voce mencionou alguma coisa sobre o Qreport ter um recuso de calculo, não entendi bem..mais esse e o proximo passo?´...

Veja Bem Agora Só Falta Sair No Relatório a Soma ...Existe Um Recurso No QReport Que Calcula Expressões... So Que No Seu Caso Voce Não Precisa Disto...O Valor Da Soma Já Foi Calculado Numa Instrução Sql e Armazenado Em Um Edit.. [color=red:273ae683dd]O Que Voce Tem Que Fazer é Transportar o Valor Do Edit Para o Relatório[/color:273ae683dd]..Como Voce Vai Fazer Isto :?: :?: :?: [color=red:273ae683dd]Da Mesma Maneira Que Voce ´Trasportou´ o Valor TEXT Dos Componentes MASKEDIT....[/color:273ae683dd]Voce Vai Adicionar Uma Variável
QrLabel e Antes De Chamar O Relatório Fazer Com Que Ele Receba o
Conteúdo Do Edit1.Text...


GOSTEI 0
Wagner

Wagner

12/02/2004

:D :D :D :D :D Valeu Grande Marco, Mais um resolvido obrigado colega muito obrigado mesmo e mais uma vez desculpe-me os desencontros


GOSTEI 0
Lucas Domiciano

Lucas Domiciano

12/02/2004

1)Voce Quer Apenas Somar Os Valores Do Campo Total ????
2) Voce Quer o Código a Se Colocado No Evento ???
3)Voce Quer Mostrar o Resultado Em Um DbEdit ???
4)Voce Quer Saber Qual O Evento Do DbEdit ???

Vamos Responder as Perguntas Sem Que as Mesmas Estejam Em Ordem.

3) É Melhor Voce Escolher Um Edit Para Mostrar o Resultado e Não Um DbEdit

4) O Evento É Voce Que Escolhe. Qual o Momento Da Sua Aplicação Que Voce Quer Mostrar a
Soma.? Pode Ser Na Abertura Do Form (Evento OnShow) , Pode Ser No Envento On Click Do
Botão Etc... A Hora Que Voce Deseja Mostrar a Soma No Edit Não Necessariamente Está
Relacionado a Um Evento Do Edit. Então Vamos Determinar Que Seu Projeto Tenha Um Botão
Chamado Somar.....

1)e 2) Respondido Simultaneamente....

Inicialmente Insira Um Query e Um DataSource No Form...Ligue-os Como Se Estivesse Fazendo Como No Componente Table... Há Porem Um Diferença Crucial. No Table tem a Propiedade Table1.Name , O Query Não. Por Sua Vez Ele Tem a Propiedade Sql, Como Voce Mencionou Anteriormente. Então Vamos Fazer Em Duas Etapas.

1)No Sql Do Query Escreva : Select *From NOMEDASUATABELA . OK
2)Na Propiedade Active Do Query Coloque Em True . Ok
3)Veja Se Não Deu Nenhuma Mensagem De Erro. Se Ocorreu é Porque Houve Erro No Passo 2
4)Se OK No Passo 3 No Evento On Show Do Form Ou Num
Evento Onclick Do Botão Somar Escreva o Seguinte Código

procedure TForm1.FormShow(Sender: TObject);
var
Soma:Integer;
begin
Query1.Close;
Query1.SQL.Clear;
query1.SQL.Add(´Select Sum(Total) TotalGeral1 From Nome_Tabela´);
Query1.Prepare;
query1.open;
Soma:=Query1.FieldByName(´TotalGeral1´).AsInteger;
Edit1.Text:=IntToStr(Valor);
end;

Obs) o Campo Total Deve Ser Numérico

Obs) Não PRECISSA GUARDAR O RESULTADO EM NENHUM CAMPO DA TABELA,POIS ESTE RESULTADO É UNICO E VOCE TEM ACESSO A ELE A QUALQUER HORA... AGORA SE VOCE QUER GUARDAR NA TABELA A SOMA PASSO A PASSO (LINHA POR LINHA) DO CAMPO TOTAL, AÍ JÁ É OUTRA HISTÓRIA E NÃO É COM A FUNÇÃO SUM() QUE SE RESOLVE ISTO

5) Teste e Nos Comuinique Do Resultado


AMIGO EU FIZ ISSO QUE VOCE DISSE NA MINHA APLICAÇÃO , NO SQLBUIILDER DEU CERTO , POREM NA HORA QUE COLOCO NO ONSHOW DA ERRO COD_CONTADOR NOT FOUND , VOCE SABE O QUE PODE SER ?
GOSTEI 0
POSTAR