Adicionar Soma de Colunas em Label - Delphi (Urgente)

Delphi

CRUD - Delphi

20/09/2021

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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"?

GOSTEI 1

Mais Respostas

Caio Domingos

Caio Domingos

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"?



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

Emerson Nascimento

20/09/2021

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?
GOSTEI 0
Paulo

Paulo

20/09/2021



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.
GOSTEI 0
Caio Domingos

Caio Domingos

20/09/2021

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.
GOSTEI 0
Paulo

Paulo

20/09/2021

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;
GOSTEI 0
Caio Domingos

Caio Domingos

20/09/2021

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)

GOSTEI 0
Paulo

Paulo

20/09/2021

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.
GOSTEI 0
Caio Domingos

Caio Domingos

20/09/2021

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.
GOSTEI 0
Paulo

Paulo

20/09/2021


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.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

20/09/2021

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;




GOSTEI 0
POSTAR