Como somar os dados de uma tabela e jogar num Edit???

Delphi

09/12/2003

Ow, e aí blz?
Uso o Delphi 5 e gostaria de saber como faço para somar os dados de uma determinada coluna de uma tabela (paradox 7) e colocar o resultado em um Edit...
Detalhe a Tabela está num Form principal e o Edit em outro Form...
Estou tentando usar um código no FormCreate do Form secundario, tá certo o q estou fazendo???

Grato pela atenção e pela paciencia...


Maluco Tubaina

Maluco Tubaina

Curtidas 0

Respostas

Agnaldo

Agnaldo

09/12/2003

[quote:61512e0e49=´Maluco Tubaina´]Ow, e aí blz?
Uso o Delphi 5 e gostaria de saber como faço para somar os dados de uma determinada coluna de uma tabela (paradox 7) e colocar o resultado em um Edit...
Detalhe a Tabela está num Form principal e o Edit em outro Form...
Estou tentando usar um código no FormCreate do Form secundario, tá certo o q estou fazendo???

Grato pela atenção e pela paciencia...[/quote:61512e0e49]

Olá.
Vc pode fazer sim sem problemas.

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.ADD(´SELECT SUM(CAMPOASERSOMADO) AS TOTAL FROM NOMEDATABELA´);
Query1.SQL.ADD(´WHERE CONDICAO´);
Query1.Open;

Formulario.Edit.text := FloatToStr(Query1.FieldByname(´VALOR´).AsFloat);

Query1.Close;

Espero ter ajudado.


GOSTEI 0
Maluco Tubaina

Maluco Tubaina

09/12/2003

Ow, valeu pela dica...
mas o codigo que vc me passou é em SQL e não deu certo, o compilador não reconheceu o ´Query1´ como comando.
e, corrija-me se tiver errado, mas se for usar um código SQL precisarei usar um componente SQL, não é?

eu queria na verdade uma coisa bem simples, acho que com um ´while is not eof do´ deve dar certo, mas eu não sei direito a sintaxe do código pra poder fazer a leitura dos campos da tabela e exibir o resultado no Edit...

em todo caso obrigado pela ajuda inicial e espero que possa me ajudar novamente...


GOSTEI 0
Gilson_our

Gilson_our

09/12/2003

Se vc não quiser usar o componente TQuery para inserir uma string SQL, então uma possibilidade é o código abaixo ativado depois do evento OnCreate do form:

procedure Tform.FormCreate(Sender: TObject);
var soma: single;
begin
soma:=0;
form.tabela.DisableControls;
try
form.tabela.first;
while not form.tabela.eof do begin
soma:= soma + form.tabelaCAMPO.value;
form.tabela.next;
end;
finally
form.tabela.EnableControls;
edit1.text:=floattostr(soma);
end;
end;


GOSTEI 0
Leonel_fraga

Leonel_fraga

09/12/2003

Mas se usar o while not eof... o programa não fica mais lento e a probabilidade de dar pau é maior?
Mas tb isso vai depender da qtde. de registros da tabela né?


GOSTEI 0
Maicongabriel

Maicongabriel

09/12/2003

Mas se usar o while not eof... o programa não fica mais lento e a probabilidade de dar pau é maior? Mas tb isso vai depender da qtde. de registros da tabela né?


Ficar lento fica, de qualquer forma, uma vez que se trabalha com Paradox(´banco de dados´ baseado em arquivo).
Dar Pau? Não necessariamente...
Mas é isso ai, quanto mais registros pior vai ser o desempenho!


GOSTEI 0
Delphox

Delphox

09/12/2003

8) Cara usa o SQL mesmo!!!
fiz algo parecido com o seu e ficou simples...e bem mais amigavel no codigo...
Valeu!!!!!!!!
8)


GOSTEI 0
Fórum Vini

Fórum Vini

09/12/2003

[quote:a2a806e709=´Maluco Tubaina´]Ow, valeu pela dica...
mas o codigo que vc me passou é em SQL e não deu certo, o compilador não reconheceu o ´Query1´ como comando.
e, corrija-me se tiver errado, mas se for usar um código SQL precisarei usar um componente SQL, não é?

eu queria na verdade uma coisa bem simples, acho que com um ´while is not eof do´ deve dar certo, mas eu não sei direito a sintaxe do código pra poder fazer a leitura dos campos da tabela e exibir o resultado no Edit...

em todo caso obrigado pela ajuda inicial e espero que possa me ajudar novamente...[/quote:a2a806e709]
Sinceramente,
acho SQL bem mais simples que um while, além de ser bem mais rápido;
para que o código do agnaldo funcione, você deve colocar uma Query, que é justamente o ´componente SQL´ que você disse.
Você pode usar esse código, que é o que o agnaldo falou, com algumas alterações:
Query1.SQL.Clear; 
Query1.SQL.ADD(´SELECT SUM(CAMPOASERSOMADO) AS TOTAL FROM NOMEDATABELA´); //retirei a condição.
Query1.Open; 

Formulario.Edit.text := FloatToStr(Query1.FieldByname(´TOTAL´).AsFloat);//o nome do campo estava errado. 
Query1.Close;


Espero ter ajudado.
Vinicius.


GOSTEI 0
POSTAR