Adicionar Soma de Colunas em Label - Delphi (Urgente)
20/09/2021
0
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
Post mais votado
20/09/2021
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
Mais Posts
20/09/2021
Caio Domingos
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.
20/09/2021
Emerson Nascimento
qual o banco de dados utilizado?
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.
20/09/2021
Caio Domingos
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.
21/09/2021
Paulo
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;
22/09/2021
Caio Domingos
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)
22/09/2021
Paulo
22/09/2021
Caio Domingos
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.
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.
22/09/2021
Emerson Nascimento
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;
Clique aqui para fazer login e interagir na Comunidade :)