Ajuda com SQL
27/06/2008
0
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.
Obrigado.
Estanieski
Curtir tópico
+ 0
Responder
Posts
27/06/2008
Altingon
No evento onshow ou onActivate do form use isso:
Seria basicamente isso...agora adapte para o seu uso... fiz de uma maneira facil de entender...poder ter maneiras mais simples....
Espero ter ajudado
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
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.
Espero ter ajudado.
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
Clique aqui para fazer login e interagir na Comunidade :)