Campo Calculado

Delphi

17/02/2008

Olá Amigos
Espero que alguém possa me ajudar.
Estou usando o Delphi 7 e BD Interbase 6.0.1.1
Tenho um banco de dados com uma tabela (pinheiros) com sete campos [Id (Integer), dataprevista (Date), dataefetiva (Date), descricao (varchar), credito (numeric 15,2), debito (numeric 15,2) e apresentado (varchar).
Tenho um DBgrid que, através de uma Query (DM.qr_pinheiros) exibe os campos dataefetiva (Data), descricao (Histórico), credito (Crédito) e debito (Débito).
Acrescentei à query 2 campos calculados nomeados como Saldo (DM.qr_PinheirosSaldo) e Vinculado (DM.qr_PinheirosVinculado).
Fiz alguns lançamentos fictícios e o DBgrid, em execução, apresenta-se da seguinte forma:
Data Histórico Crédito Débito Saldo Vinculado (ainda sem código)
01/02/2008 Saldo inicial 2.000,00 0,00 2.000,00
03/02/2008 Saque 0,00 250,00
05/02/2008 Depósito 1.000,00 0,00 1.000,00
07/02/2008 Livros 0,00 25,00

Eu quero que o DBgrid se apresente da seguinte forma:
Data Histórico Crédito Débito Saldo
01/02/2008 Saldo inicial 2.000,00 0,00 2.000,00
03/02/2008 Saque 0,00 250,00 2.000,00
05/02/2008 Depósito 1.000,00 0,00 3.000,00
07/02/2008 Livros 0,00 25,00 3.000,00

Explicação:
1 - O campo ´apresentado´ pode ser ´SIM´ ou ´NÃO´.
Se ´SIM´ o DBgrid mostra o registro em preto (funcionando) e a coluna ´Saldo´ é afetada.
Se ´NÃO´ o DBgrid mostra o registro em azul (funcionando) e a coluna ´Saldo´ não deve ser afetada, mantendo o valor anterior.
No exemplo acima os registros de 03/02 e de 07/02 têm a opção ´NÃO´ no campo ´apresentado´.
2 - No evento OnCalcFields a Procedure completa é a seguinte:

procedure TDM.qr_PinheirosCalcFields(DataSet: TDataSet);
var
SldPi, VincPi : currency;

begin
SldPi:=0;
if DM.qr_PinheirosAPRESENTADO.Value = ´SIM´ then
begin
Sldpi:=SldPi + DM.qr_PinheirosCREDITO.Value - DM.qr_PinheirosDEBITO.Value;
DM.qr_PinheirosSaldo.Value:= SldPi;
end;
end;
end.

Como devo fazer para obter o resultado que estou buscando.

Desde já agradeço qualquer ajuda.


Zecabr

Zecabr

Curtidas 0
POSTAR