Ajuda com SQL

Delphi

27/06/2008

Pessoal eu tenho um campo em uma tabela que vamos chamar de ´Contagem´ onde eu preciso realizar um incrementdo dele de maneria automática no banco de dados sempre que eu abrir um form, gostaria de uma ajuda para criar um Update, alguém poderia me orientar?

Obrigado.


Estanieski

Estanieski

Curtidas 0

Respostas

Altingon

Altingon

27/06/2008

No evento onshow ou onActivate do form use isso:

var
  ultimo:integer;
//aqui vc verifica o maior valor gravado
Query.close;
Query.sql.clear;
Query.sql.add(´select max(campo) as ultimo from tabela´);
Query.open;
//se tiver algum dado no campo ele pega caso contrario joga 0;
if query.recordcount > 0 then
  ultimo := query.fieldbyname(´ultimo´).asInteger
else
  ultimo := 0;
Query.close;
Query.sql.clear;
Query.sql.add(´update tabela set ´+
                     ´campo = :campo ´+
                     ´where codigo = :codigo´);
// partindo do principio que tem um registro já existem e que seja unico
query.parambyname(´codigo´).asInteger := 1;
query.parambyname(´campo´).asInteger := ultimo +1;
Query.Execsql;
try
  transaction.commit;
except
  transaction.rollback;

//faz o update




Seria basicamente isso...agora adapte para o seu uso... fiz de uma maneira facil de entender...poder ter maneiras mais simples....

Espero ter ajudado


GOSTEI 0
Estanieski

Estanieski

27/06/2008

valeu...


GOSTEI 0
Brunodsr

Brunodsr

27/06/2008

O codigo do amigo ta correto, mas para evitar problemas qndo dois usuarios acessam a tela ao mesmo tempo é melhor deixar o banco incrementar.
Query.close;
Query.sql.clear;
Query.sql.add(´update tabela set ´+
                     ´campo = coalesce(campo,0)+1 ´+
                     ´where codigo = :codigo´);
query.parambyname(´codigo´).asInteger := 1;
Query.Execsql;


Espero ter ajudado.


GOSTEI 0
POSTAR