Jump to content
Fórum Script Brasil
  • 0

Somar colunas query bd acess


Lauro Pogozelski

Question

Bom dia a todos!

Tenho um form de consulta e quero somar a coluna soma onde o resultado será jogado num DBText, mas tá dando erro tipo ''qry:parametro soma não encontrado'', como sou novato em Delphi to quebrando a cabeça.

As linhas somam na horizontal do dbgrid sem problema. abaixo fragmento do código:

procedure TfrmPesquisa.SpedSomaClick(Sender: TObject);

Var TOTAL:Double;

pSoma:String;

begin

TOTAL:=0;

Qry.Close;

Qry.SQL.Clear;

Qry.SQL.Add('Select Sum (qrySoma) as TOTAL from Receita');

Qry.Parameters.ParamByName('pSoma').Value:=edtTotal.Caption;

Qry.Open;

TOTAL:=TOTAL + qrySoma.Value;

edtTotal.Caption:= FormatFloat('###.##0.00',Qry.FieldByName('TOTAL').ASfloat);

end;

Os campos que somam na horizontal: frete-frete1-frete2-soma é esse campo q quero somar a coluna.

Des de já agradeço sua ajuda"

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Olá Lauro Pogozelski,

referente ao erro, é porque você ta usando um parametro (pSoma) que não existe em sua query (SELECT).

outra coisa, você nunca deve inserir valor num DBTExt, DBEdit, etc... e sim no campo do seu DataSet a qual esta ligado esse DBText, exemplo:

Query1.FieldByName('nomeDoCampo').value := Qry.FieldByName('TOTAL').ASfloat);

o restante num entendi bem o que você quer direito.

Abs. Progr'amador

Link to comment
Share on other sites

  • 0
Olá Lauro Pogozelski,

referente ao erro, é porque você ta usando um parametro (pSoma) que não existe em sua query (SELECT).

outra coisa, você nunca deve inserir valor num DBTExt, DBEdit, etc... e sim no campo do seu DataSet a qual esta ligado esse DBText, exemplo:

Query1.FieldByName('nomeDoCampo').value := Qry.FieldByName('TOTAL').ASfloat);

o restante num entendi bem o que você quer direito.

Abs. Progr'amador

ok vou fazer uns testes depois volto aqui, na verdade qro somar as coluna campo soma e jogar o valor no dbtext.

Link to comment
Share on other sites

  • 0
Olá Lauro Pogozelski,

referente ao erro, é porque você ta usando um parametro (pSoma) que não existe em sua query (SELECT).

outra coisa, você nunca deve inserir valor num DBTExt, DBEdit, etc... e sim no campo do seu DataSet a qual esta ligado esse DBText, exemplo:

Query1.FieldByName('nomeDoCampo').value := Qry.FieldByName('TOTAL').ASfloat);

o restante num entendi bem o que você quer direito.

Abs. Progr'amador

ok vou fazer uns testes depois volto aqui, na verdade qro somar as coluna campo soma e jogar o valor no dbtext.

Olá amigos!

ainda estou quebrando a cabeça mudei um pouco o código mas dá erro qry:Field qrySoma not found diz que o campo não foi encontrado porem o campo existe na TQuery, onde estou errando, se pudrem examinem o cod abaixo:

procedure TfrmPesquisa.SpedSomaClick(Sender: TObject);

Var TOTAL:Double;

qrySoma:String;

begin

TOTAL:=0;

Qry.Close;

Qry.SQL.Clear;

Qry.SQL.Add('select * from Receita where Soma =:Soma');

Qry.Parameters.ParamByName('Soma').Value:=Qry.FieldByName('qrySoma').AsFloat;

Qry.FieldByName('qrySoma').value := Qry.FieldByName('Soma').ASfloat;

Qry.Open;

edtTotal.Caption:= FormatFloat('###.##0.00',Qry.FieldByName('TOTAL').ASfloat);

já não sei mais oque fazer!

Link to comment
Share on other sites

  • 0

Olá,

veja:

Qry.Parameters.ParamByName('Soma').Value:=Qry.FieldByName('qrySoma').AsFloat;

Primeiro você tentando alimentao o parametro Soma de um campo pra própria query que você ta tentando execultar. qrySoma é realmene um campo da tabela?

ae depois você fez isso:

Qry.FieldByName('qrySoma').value := Qry.FieldByName('Soma').ASfloat; - algo completamente errado.

confesso ainda não entendi nada do que realmente você ta querendo.

pra abrir a query deveria ser algo assim:

procedure TfrmPesquisa.SpedSomaClick(Sender: TObject);
Var TOTAL, vSoma:Double;
qrySoma:String;

begin
  vSoma := blablabla; //aqui você vai usar como parametro 
  TOTAL:=0;

  Qry.Close; 
  Qry.SQL.Clear;
  Qry.SQL.Add('select * from Receita where Soma =:Soma');
  Qry.Parameters.ParamByName('Soma').Value:= vSoma;
  Qry.Open;
end;

Abs. Progr'amador

Link to comment
Share on other sites

  • 0

Uso o código abaixo para consultar as duplicatas e no fim ele me dá o total do filtro.

crie a procedure SomaPagar

e adapte para a sua tabela de consulta

em ValorDupl troque pelo seu Total.

procedure TFrmCR.SomaPagar;

var

s:Double;

Begin

Duplicatas.DisableControls;

Duplicatas.First;

s:= 0;

While not Duplicatas.Eof do begin

s:=s+Duplicatas.Fieldbyname('ValorDupl').asFloat;

Duplicatas.Next;

End;

TxtPagar.caption := FormatFloat('###,###,#0.00', s);

Duplicatas.EnableControls;

end;

O botão de pesquisa segue abaixo e no fim ele chama a procedure

Acredito que é por aí.

procedure TFrmCR.BitBtn1Click(Sender: TObject);

var

DataI, DataF: TDatetime;

begin

Duplicatas.open;

if Duplicatas.RecordCount = 0 then

Begin

Showmessage('O Cliente não possui débitos para esse período!');

exit;

End;

Begin

DataI:=strtodate(MaskEdit1.text);

ADOQuery1.Close;

ADOQuery1.sql.Clear;

ADOQuery1.sql.Add('Update TblDuplicatas Set Obs =' + (QuotedStr(txtobs.Text)) + ', Banco =' + (QuotedStr(txtbanco.Text)) + ', DtPgto = '+#39+FormatDateTime('mm/dd/yyyy',DataI)+#39+' where RegDet='+DbGrid1.fields[0].text);

ADOQuery1.ExecSQL;

showmessage('Operação de pagamento concluída!');

maskedit3.Text := '';

Duplicatas.close;

Duplicatas.open;

QryTipos.Open;

MaskEdit1.Text := '';

TxtObs.Text := '';

SomaPagar;

end;

end;

Link to comment
Share on other sites

  • 0

Olá eu aqui de novo! tudo o que eu quero o que os valores que estão no campo soma apareçam em um dbtext, então quero somar a coluna do campo soma apenas isso, pois as somas por linhas estão sendo somadas pelo evento oncalcfields.

Somar a coluna soma e pronto abaixo como está o cod agora.

Ao clickar no botão soma aparece isto: 0,00 e o dbgrid em branco.

Procedure spedBtnSoma.click (Sender:object);

Var vSoma:Double;

begin

if (Qry.RecordCount <> 0) then

vSoma:=0;

Qry.DisableControls;

Qry.First;

While not Qry.EOF do begin

vSoma:=vSoma+QrySoma.Value;

Qry.Next;

Qry.EnableControls;

Qry.Close;

Qry.SQL.Clear;

Qry.SQL.Add('select * from Receita where Soma =:Soma');

Qry.Parameters.ParamByName('Soma').Value:= vSoma;

Qry.Open;

edtTotal.Caption:=FormatFloat('##0.00',Qry.FieldByName('Soma').AsFloat);

end;

end;

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...