Charles, creio que teu problema é conceitual.
Há duas formas de fazeres o que desejas:
1) Usar duas Querys(não Table). A primeira Query usarás para retornar os 
registros que precisam ser atualizados, ORDER BY pela data. A segunda irá 
fazer, para cada registro da primeira query, um UPDATE para atualizar os 
valores. Mas creio que dessa forma será mais demorado e mais pesado para o 
banco de dados.
2) Qual banco estás utilizando? Fiz um caso similar em Firebird para 
atualização da quantidade e o custo médio do estoque a cada lançamento, e 
utilizei Stored Procedure ativada por Trigger. Funciona que é uma beleza, e 
como está dentro do Banco de Dados é rápida e satisfaz plenamente.

Estude sobre Stored Procedures ... vale a pena.

Espero ter ajudado.

Alessandro DUARTE de Moraes
A.C. Santa Casa do Rio Grande.
http://www.santacasarg.com.br
(53) 3233-7118
  ----- Original Message ----- 
  From: HNS Informática 
  To: Delphi Br 
  Sent: Wednesday, July 23, 2008 1:46 PM
  Subject: [delphi-br] Rotina Sql


  Pessoal, possuo uma tabela de Caixa que possue os seguintes campos
  Data HIstorico Historicod Complemento, Entrada Saída e Saldo

  ela tem 14.000 registros deste inicio de 2006.
  Cada vez que faço um lançamento, ela tem que atualizar o saldo da data do 
lançamento endiante, ou seja, tem que aceitar fazer lançamento do mes 
corrente.... Porem estou com dificuldades para fazer a rotina de atualização do 
saldo em sql, ai usei uma query e uma table... no meu sistema antigo com 
paradoz e table funcionava perfeitamente, mas agora que tenho que fazer em sql, 
ja que a table não ordena por data, complicou... segue abaixo a rotina, se 
alguem puder melhorar ela ou uma forma melhor de fazer agradeço

  procedure tfrmcaixa.calculasaldo;
  var valor : currency;
  begin
  tbcaixa.refresh;
  if querycaixa.recordcount = 1 then
  begin
  tbcaixa.locate('Registro',querycaixa['Registro'],[]);
  tbcaixa.edit;
  tbcaixa['Saldo'] := querycaixa['Entrada'] - querycaixa['Saida'];
  tbcaixa.post;
  querycaixa.refresh;
  label5.caption := 'SALDO: '+formatfloat('###,##0.00',querycaixa['Saldo']);
  end
  else
  begin
  querycaixa.prior;
  if (querycaixa['Saldo'] = null) or (querycaixa.bof) then
  begin
  tbcaixa.locate('Registro',querycaixa['Registro'],[]);
  tbcaixa.edit;
  tbcaixa['Saldo'] := querycaixa['Entrada'] - querycaixa['Saida'];
  tbcaixa.post;
  querycaixa.refresh;
  end;
  valor := querycaixa['Saldo'];
  querycaixa.next;
  while not querycaixa.eof do
  begin
  tbcaixa.locate('Registro',querycaixa['Registro'],[]);
  tbcaixa.edit;
  tbcaixa['Saldo'] := valor-querycaixa['Saida']+querycaixa['Entrada'];
  tbcaixa.post;
  querycaixa.refresh;
  valor := querycaixa['Saldo'];
  querycaixa.next;
  end;
  end;
  label100.caption := 'SALDO: '+formatfloat('###,##0.00',querycaixa['Saldo']);

  Att

  Charles A. Chiodi
  HNS Informática

  [As partes desta mensagem que não continham texto foram removidas]



   
  -------------------------- 
  E-mail Seguro Vetorial.net 

  Mensagem classificada como NÃO-SPAM. Para classificar como SPAM, 
  encaminhe para [EMAIL PROTECTED] 

  Chave de Identificação: 54568,48878ecd452791121010416 


[As partes desta mensagem que não continham texto foram removidas]

Responder a