Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DárioSe

[Resolvido] calcular total do dbgrid

Recommended Posts

Olá gente eu estou com uma duvida aqui, estou com um programa com base de dados firebird e estou utilizando o dbexpress. A duvida é seguinte como eu posso somar os valores de um campo do dbgrid e mostrar em um label1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá gente só para reforça a minha duvida quando utilizo este comando

Dtm_movimentos.DtSetOperat.close;

Dtm_movimentos.DtSetOperat.CommandText:=

QuotedStr('select sum(valor_total) as total from saidafilha where nrvenda = '+ Edt_nota.Text);

Dtm_movimentos.DtSetOperat.ExecSQL;

Dtm_movimentos.DtSetOperat.open;

 

 

O erro que aparece é esse aqui, mas no ibconsole o resultado é feito normalmente

Token unknown -line 1, char 0

O que pode esta ocrrendo????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta algo assim.... crie uma variável pra montar seu sql, por exemplo....

 

var sSQL : String;
....

sSQL := 'select sum(valor_total) as total from saidafilha where nrvenda = ' + Edt_nota.Text;

Dtm_movimentos.DtSetOperat.close;
Dtm_movimentos.DtSetOperat.CommandText:= QuotedStr(sSQL);
Dtm_movimentos.DtSetOperat.open;

E não use o ExecSql em querys de consulta... o Open é o comando utilizado para isso... ExecSQL é usado em Inserts, Updates e Deletes.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo nrvenda é um campo de que tipo? Se jogar a query direto no BD com os dados que passa no edit, ela roda normalmente?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

O nrvenda é uma chave primaria ele é do tipo inteiro, se eu fizer o codico no query assim

select sum(valor_total) as total from saidafilha where nrvenda = 45

mas se eu fizer assim da o erro

select sum(valor_total) as total from saidafilha where nrvenda = '+ Edt_nota.Text

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu pela ajuda Chronos! mas foi essa codigo que salvou meu programa! valeu a todos Resolvido

 

procedure TFrm_Saida_mercadoria.Edt_VUnExit(Sender: TObject);
var
tot: real;
bookmark : tbookmarkstr;
begin



Dtm_movimentos.DtSetDetalhe.edit;
Dtm_movimentos.DtSetDetalhe['valor_total']:=
Dtm_movimentos.DtSetDetalhe['Qtdi']*
Dtm_movimentos.DtSetDetalhe['valor_unit'];
Dtm_Cadastros.SimpleDSet_CadEstoq.edit;
Dtm_Cadastros.SimpleDSet_CadEstoq['qtd']:=
Dtm_Cadastros.SimpleDSet_CadEstoq['qtd']
-Dtm_movimentos.DtSetDetalhe['Qtdi'];


 bookmark := Dtm_movimentos.DtSetDetalhe.Bookmark;

 try
 Dtm_movimentos.DtSetDetalhe.DisableControls;
 tot := 0;

 try
 Dtm_movimentos.DtSetDetalhe.First;

 while not Dtm_movimentos.DtSetDetalhe.Eof do begin

 if Dtm_movimentos.DtSetDetalhe['valor_total'] <> null then
 tot := tot + Dtm_movimentos.DtSetDetalhe.fields[4].asfloat;
 Dtm_movimentos.DtSetDetalhe.next;
 end;
 finally

 Dtm_movimentos.DtSetDetalhe.EnableControls;
 end;
 finally
 Dtm_movimentos.DtSetDetalhe.Bookmark := bookmark;
 end;

 Dtm_movimentos.DtSetDetalhe.edit;
 Dtm_movimentos.DtSetDetalhe['total'] := tot;
 Dtm_movimentos.DtSetDetalhe.post;
 Label22.Caption:=floattostr(tot);

end;
procedure TFrm_Saida_mercadoria.Edt_QtdExit(Sender: TObject);
begin
if edt_qtd.Text = null then
 begin
 showmessage('Por favor informe a quantidade');
 edt_qtd.SetFocus;
 end
end;

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.