Fórum SQL no oncalcfield, o que está errado #144011

10/03/2003

0

O que estou querendo fazer é calcular todos os cheques que estão aparencedo no DBGRID.
Criei um campo calculado com o nome de TCheques, e o que está errado?

Query3.Close;
Query3.SQL.Clear;
Query3.SQL.Add(´SELECT SUM( Valor ) TCheques FROM Cheque ´);
Query3.ExecSQL;


Consorte

Consorte

Responder

Posts

10/03/2003

Anonymous

ao inves de usar execsql, use open...


Responder

Gostei + 0

10/03/2003

Consorte

ao inves de usar execsql, use open...


procedure TFEmp.Query2CalcFields(DataSet: TDataSet);
begin
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add(´SELECT SUM( Valor ) as TCheques FROM Cheque ´);
Query2.Open;
end;


Responder

Gostei + 0

10/03/2003

Consorte

[quote:c78eefe040=´kotho´]ao inves de usar execsql, use open...


procedure TFEmp.Query2CalcFields(DataSet: TDataSet);
begin
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add(´SELECT SUM( Valor ) as TCheques FROM Cheque ´);
Query2.Open;
end;[/quote:c78eefe040]


Responder

Gostei + 0

10/03/2003

Aroldo Zanela

[quote:70320fd8dd=´Consorte´][quote:70320fd8dd=´kotho´]ao inves de usar execsql, use open...


procedure TFEmp.Query2CalcFields(DataSet: TDataSet);
begin
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add(´SELECT SUM( Valor ) as TCheques FROM Cheque ´);
Query2.Open;
end;[/quote:70320fd8dd][/quote:70320fd8dd]
Consorte,

Analise o código e veja o seguinte. No evento OnCalcFields você está fechando a própria consulta (Query2), não tem como funcionar.

Faça o seguinte:

Crie uma query para obter o total e uma variável privada (conforme o caso), como já foi feito:

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(´SELECT SUM( Valor ) as TCheques FROM Cheque ´);
Query1.Open;

nTotal := Query1TCheques.AsCurrency;

Crie uma outra query com a consulta desejada e com o fields editor adicione o campo calculado. A partir daí você pode, por exemplo:
.
.
.
Query2.Open;

procedure TFEmp.Query2CalcFields(DataSet: TDataSet);
begin
Query2CMP_CALCULADO.Value := nTotal; //
end;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar