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]