Ajuda com SQL

27/06/2008

1

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.


Responder

Posts

27/06/2008

Altingon

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


Responder

27/06/2008

Estanieski

valeu...


Responder

27/06/2008

Brunodsr

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.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira