Adicionar Soma de Colunas em Label - Delphi (Urgente)

20/09/2021

0

Boa noite, Galera!

Estou com dificuldades em Somar Colunas no Delphi e Passar o valor total para uma Label.

Colunas são Idade e Nome.

As label são:
somaIdades
mediaIdade
totalCadastrado

e preciso que ela fique sempre atualizando conforme alimento o Banco de Dados.
Ajuda ai time.
Caio Domingos

Caio Domingos

Responder

Post mais votado

20/09/2021

péra... você quer somar idade com nome??? somar ou concatenar?

daí você apresenta:
somaIdades
mediaIdade
totalCadastrado

não consegui entender.

você pode publicar exemplos dos dados que você tem, do resultado que você precisa, e de como você implementou a rotina de "cálculo"?

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

20/09/2021

Caio Domingos

péra... você quer somar idade com nome??? somar ou concatenar?

daí você apresenta:
somaIdades
mediaIdade
totalCadastrado

não consegui entender.

você pode publicar exemplos dos dados que você tem, do resultado que você precisa, e de como você implementou a rotina de "cálculo"?



Eu queria a soma total das idades, media das idades e quanto nome foram cadastrados. Eu uso o ADOconnection e ADOquery.
Responder

20/09/2021

Emerson Nascimento

você pode publicar exemplos dos dados que você tem, do resultado que você precisa, e de como você implementou a rotina de "cálculo"?
qual o banco de dados utilizado?
Responder

20/09/2021

Paulo



Eu queria a soma total das idades, media das idades e quanto nome foram cadastrados. Eu uso o ADOconnection e ADOquery.


Você pode usar os comandos, avg para média, sum para somar e count para obter a quantidade de registros.

select avg(idade) from...
select sum(idade) from...
select count(id) from...

a cada alteração no banco você precisa refazer o calculo e atualizar o caption do label.
Responder

20/09/2021

Caio Domingos

você pode publicar exemplos dos dados que você tem, do resultado que você precisa, e de como você implementou a rotina de "cálculo"?
qual o banco de dados utilizado?


Estou usando o Microsoft SQL Server Management

procedure Ttl_cadastrar.btn_confirmarClick(Sender: TObject);
begin
//Alimentei o campo da tabela (Nome e Idade)
FrmPrincipal.Qry1.FieldByName('nome').Value := edt_nome.Text;
FrmPrincipal.Qry1.FieldByName('idade').Value := edt_idade.Text;
//Gravei no Banco de dados
FrmPrincipal.Qry1.Post;
//Fechar a Tela de Cadastro e Mostrar a Principal que estava oculta
FrmPrincipal.Qry2.Close;
FrmPrincipal.Qry2.SQL.Clear;
FrmPrincipal.Qry2.SQL.Add('SELECT SUM(idade) FROM cadastro where id < 1000');
FrmPrincipal.Qry2.Open;
FrmPrincipal.LblSoma.Caption := FloatToStr(FrmPrincipal.Qry2.fields[2].value);
FrmPrincipal.LblSoma.Update;
tl_cadastrar.close;
FrmPrincipal.Visible:=True
end;

tentei isso, mas na verdade eu não faço ideia de como fazer. Estou aprendendo ainda.
Responder

21/09/2021

Paulo

você pode publicar exemplos dos dados que você tem, do resultado que você precisa, e de como você implementou a rotina de "cálculo"?
qual o banco de dados utilizado?


Estou usando o Microsoft SQL Server Management

procedure Ttl_cadastrar.btn_confirmarClick(Sender: TObject);
begin
//Alimentei o campo da tabela (Nome e Idade)
FrmPrincipal.Qry1.FieldByName('nome').Value := edt_nome.Text;
FrmPrincipal.Qry1.FieldByName('idade').Value := edt_idade.Text;
//Gravei no Banco de dados
FrmPrincipal.Qry1.Post;
//Fechar a Tela de Cadastro e Mostrar a Principal que estava oculta
FrmPrincipal.Qry2.Close;
FrmPrincipal.Qry2.SQL.Clear;
FrmPrincipal.Qry2.SQL.Add('SELECT SUM(idade) FROM cadastro where id < 1000');
FrmPrincipal.Qry2.Open;
FrmPrincipal.LblSoma.Caption := FloatToStr(FrmPrincipal.Qry2.fields[2].value);
FrmPrincipal.LblSoma.Update;
tl_cadastrar.close;
FrmPrincipal.Visible:=True
end;

tentei isso, mas na verdade eu não faço ideia de como fazer. Estou aprendendo ainda.


Tente na consulta algo do tipo

  with Qry2 do begin
    Close;
    SQL.Clear;
    SQL.Add('select sum(idade), avg(idade), count(idade) from cadastro where id < 1000');
    Open;
  end;
  lblSoma.Caption :=  'Soma de idade: ' + Qry2.Fields[0].Text
                    + ' Média de idade: ' + Qry2.Fields[1].Text
                    + ' Qtd de cadastros: ' + Qry2.Fields[2].Text;
Responder

22/09/2021

Caio Domingos

você pode publicar exemplos dos dados que você tem, do resultado que você precisa, e de como você implementou a rotina de "cálculo"?
qual o banco de dados utilizado?


Estou usando o Microsoft SQL Server Management

procedure Ttl_cadastrar.btn_confirmarClick(Sender: TObject);
begin
//Alimentei o campo da tabela (Nome e Idade)
FrmPrincipal.Qry1.FieldByName('nome').Value := edt_nome.Text;
FrmPrincipal.Qry1.FieldByName('idade').Value := edt_idade.Text;
//Gravei no Banco de dados
FrmPrincipal.Qry1.Post;
//Fechar a Tela de Cadastro e Mostrar a Principal que estava oculta
FrmPrincipal.Qry2.Close;
FrmPrincipal.Qry2.SQL.Clear;
FrmPrincipal.Qry2.SQL.Add('SELECT SUM(idade) FROM cadastro where id < 1000');
FrmPrincipal.Qry2.Open;
FrmPrincipal.LblSoma.Caption := FloatToStr(FrmPrincipal.Qry2.fields[2].value);
FrmPrincipal.LblSoma.Update;
tl_cadastrar.close;
FrmPrincipal.Visible:=True
end;

tentei isso, mas na verdade eu não faço ideia de como fazer. Estou aprendendo ainda.


Tente na consulta algo do tipo

  with Qry2 do begin
    Close;
    SQL.Clear;
    SQL.Add('select sum(idade), avg(idade), count(idade) from cadastro where id < 1000');
    Open;
  end;
  lblSoma.Caption :=  'Soma de idade: ' + Qry2.Fields[0].Text
                    + ' Média de idade: ' + Qry2.Fields[1].Text
                    + ' Qtd de cadastros: ' + Qry2.Fields[2].Text;


Man, tentei essa forma que você disse e nada. Estou bem perdido e não tenho ideia de como resolver, tem alguma forma de eu passar os erros, imagem, video enviando em winrar ? Estou muito perdido.

Eu preciso fazer o seguinte.

Quantidade: (0 todas vez que cadastrar essa label tem que atualizar) -> Quantidade de clientes cadastrados
Soma das Idades: (0 todas vez que cadastrar essa label tem que atualizar)-> Soma das idades dos cadastrado
Idade Média: (0 todas vez que cadastrar essa label tem que atualizar) -> Média das idades cadastradas

Eu conheço as linguagens do SQL - SUM AVG COUNT porém não sei aplica-las no delphi para que eu possa passar para uma label.
Devo ter uma Qry ou duas Qry. Ex: Qry1 e Qry2.

(Texto dizendo se a maioria é idoso, adolescentes ou crianças)

Responder

22/09/2021

Paulo

Para usar os códigos sql no delphi basta colocar eles dentro do sql.add da query. Posta seu código aqui deve ter algum erro nele.
Responder

22/09/2021

Caio Domingos

Para usar os códigos sql no delphi basta colocar eles dentro do sql.add da query. Posta seu código aqui deve ter algum erro nele.


procedure Ttl_cadastrar.btn_confirmarClick(Sender: TObject);
begin
with FrmPrincipal.Qry2 do begin
Close;
SQL.Clear;
SQL.Add(''select id,nome,idade from cadastro'');
SQL.Add(''select sum(idade) from cadastro where id < 1000'');
Open;
FrmPrincipal.LblSoma.Caption := FrmPrincipal.Qry2.Fields[2].Text;
end;
SQL.Add(''select id,nome,idade from cadastro''); Obs: Quando não coloco esse select fica manda msg de erro dizendo que não encontro o ID.
Idade Soma: 0 (o zero some mas não mostra o valor da soma) -> Soma das idades cadastradas.
Responder

22/09/2021

Paulo


procedure Ttl_cadastrar.btn_confirmarClick(Sender: TObject);
begin
with FrmPrincipal.Qry2 do begin
Close;
SQL.Clear;
SQL.Add(''select id,nome,idade from cadastro'');
SQL.Add(''select sum(idade) from cadastro where id < 1000'');
Open;
FrmPrincipal.LblSoma.Caption := FrmPrincipal.Qry2.Fields[2].Text;
end;
SQL.Add(''select id,nome,idade from cadastro''); Obs: Quando não coloco esse select fica manda msg de erro dizendo que não encontro o ID.
Idade Soma: 0 (o zero some mas não mostra o valor da soma) -> Soma das idades cadastradas.


Tem erro de lógica no seu código. Você escreveu 2 select na mesma query e depois mandou ela executar. certeza que daria erro. Depois você tentou usar um SQL.add após ter fechado o with por isso também da erro.

Substituia por

with FrmPrincipal.Qry2 do begin
  Close;
  SQL.Clear;
  SQL.Add('select id,nome,idade from cadastro');
  Open;
  Close;  
  SQL.Clear;
  SQL.Add('select sum(idade) from cadastro where id < 1000');
  Open;
  FrmPrincipal.LblSoma.Caption := FrmPrincipal.Qry2.Fields[0].Text;
  Close;  
  SQL.Clear;  
  SQL.Add('select id,nome,idade from cadastro');
  Open;   
end;


É pra funcionar desta forma, mas não tem lógica nenhuma esse código. Executar vários select um seguido do outro.
Responder

22/09/2021

Emerson Nascimento

o Paulo Felipe está correto. Traga tudo numa única pesquisa.
procedure Ttl_cadastrar.btn_confirmarClick(Sender: TObject);
begin
  //Alimentei o campo da tabela (Nome e Idade)
  FrmPrincipal.Qry1.FieldByName('nome').Value := edt_nome.Text;
  FrmPrincipal.Qry1.FieldByName('idade').Value := edt_idade.Text;
  //Gravei no Banco de dados
  FrmPrincipal.Qry1.Post;

  //Fechar a Tela de Cadastro e Mostrar a Principal que estava oculta
  if FrmPrincipal.Qry2.Active then FrmPrincipal.Qry2.Close;
  FrmPrincipal.Qry2.SQL.Text := 'select sum(idade) total, avg(idade) media, count(idade) quantidade from cadastro where id < 1000';
  FrmPrincipal.Qry2.Open;
  FrmPrincipal.LblSoma.Caption := FrmPrincipal.Qry2.Fields[0].AsString;
  FrmPrincipal.LblMedia.Caption := FrmPrincipal.Qry2.Fields[1].AsString;
  FrmPrincipal.LblQuant.Caption := FrmPrincipal.Qry2.Fields[2].AsString;
  FrmPrincipal.Qry2.Close;
  tl_cadastrar.close;
  FrmPrincipal.Visible := True;
end;




Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar