Numero Automatico no Delphi com firebird

Delphi

08/08/2008

Galera,

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

Cleiflavio

Curtidas 0

Respostas

álison Bissoli

álison Bissoli

08/08/2008

utilize no banco o tipo de dado integer
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


GOSTEI 0
Cleiflavio

Cleiflavio

08/08/2008

Valeuuu deu certo


GOSTEI 0
Thomaz_prg

Thomaz_prg

08/08/2008

[quote:5f8f4e217c=´Álison Bissoli´]select count(campo_sequencial) from nome_da_tabela e
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.


GOSTEI 0
Ricknetbr

Ricknetbr

08/08/2008

O Firebird possibilita a criacao de triggers para esse proposito.
Verifique a documentacao


GOSTEI 0
álison Bissoli

álison Bissoli

08/08/2008

nus....

errei feio


desculpa aí

era pra eu ter colocado MAX mesmo e coloquei count...


GOSTEI 0
POSTAR