Numero Automatico no Delphi com firebird
08/08/2008
0
Meu problema é o seguinte eu tenho uma cadastro que faço no Delphi eu preciso colocar um numero de controle nesse cadastro mas esse nuemro de controle tem que ser automatico tipo 1,2,3,4,5,6 sem que eu digite, eu estou usando o BD Firebird e não sei como definir meu campo no Bd.
Alguem poderia me ajudar ?
Obrigado
Cleiflavio
Posts
08/08/2008
álison Bissoli
no evento onbeforepost do clientdataset faça um
select count(campo_sequencial) from nome_da_tabela e
alimente o campo sequencial do clientdataset com o resultado da pesquisa
+ 1.
se precisar de maiores detalhes me fala ok
08/08/2008
Thomaz_prg
alimente o campo sequencial do clientdataset com o resultado da pesquisa[/quote:5f8f4e217c]
Amigo não use o Count. Se quiser pode até usar o MAX, mas NUNCA count. COUNT retorna a quantidade de registros.
Suponhamos o seguinte, vc inseriu 3 registros, ficando na tabela assim:
sequencia - outros dados
1 - .....
2 - .....
3 - .....
e então exclui o penultimo registro, ou seja, o 2, ficando assim:
sequencia - outros dados
1 - .....
3 - .....
Ao efetuar a consulta, o count irá retornar 2, que, somando +1, seria 3. Ao inserir, se o campo sequencial for uma chave primária ou chave única, vai dar um erro de violação, se não for, vc ficará com 2 registros com o campo sequencial sendo 3.
Na verdade, eu nem indicaria o MAX, mas sim, o uso de um generator. Isso pq se vc for pegar o valor antes de gravar o registro, se seu sistema for usado em rede, pode ser que tanto vc quanto outro usuário abram a tela de cadastro ao mesmo tempo, pegando o mesmo valor de MAX, o que dará erro. Isso com um generator não acontece.
09/08/2008
Ricknetbr
Verifique a documentacao
09/08/2008
álison Bissoli
errei feio
desculpa aí
era pra eu ter colocado MAX mesmo e coloquei count...
Clique aqui para fazer login e interagir na Comunidade :)