Numero Automatico no Delphi com firebird

08/08/2008

1

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


Responder

Posts

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


Responder

08/08/2008

Cleiflavio

Valeuuu deu certo


Responder

08/08/2008

Thomaz_prg

[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.


Responder

09/08/2008

Ricknetbr

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


Responder
nus....

errei feio


desculpa aí

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


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