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 atual é 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.

Responder a