Jump to content
dipacheco

Campo Int com valor automático

Recommended Posts

dipacheco

Boas! Tenho uma BD em SQL em q, numa das tabelas, tenho um campo chamado código que não quero que tenha repetições e que quero que seja gerado de automaticamente. Como posso fazer isso via management studio? Abraço.

Share this post


Link to post
Share on other sites
Caça

Defines esse campo como chave primária e colocas a propriedade de auto incrementação a True


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

outra vez sobre este assunto!...

este campo chave com numeração automatica que criei funciona correctamente. mas agora queria outra coisa... se eu apagar um registo da BD esse registo deveria puder ser utilizado novamente. porque nao da?

exemplo: apagava o registo com codigo = 2

quando fosse inserir, ao inves de inserir no ultimo, inseria no 2!

Share this post


Link to post
Share on other sites
Caça

Automaticamente não.

Mas o que é que tens contra? Toda a gente implica com isto..


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

nao tenho nada contra! LOL

diz-me so mais uma coisa! como posso reiniciar uma tabela? ou seja, colocar sem dados e fazer uso a partir do index 1. tenho de criar a tabela de novo?...

Share this post


Link to post
Share on other sites
Caça

Existe um comando que reinicia mas não sei qual é


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

isto está a complicar-me a vida porque tinha uma barra de deslocamento entre registos e o q fazia era ir para o 1º q era o 1, ir para o ultimo q era o last... ou entao ir para o anterior ou para o proximo! mas fazia isso pelo codigo... agora nao funciona porque o proximo a seguir ao 1 nao é o 2 mas sim o 5... bem como o primeiro pode nao ser o 1 se eu o apagar... etc

Share this post


Link to post
Share on other sites
dipacheco

estava a controlar pelo codigo... por exemplo codigo actual +1 ou -1 para saltar para proximos e anteriores! e no incio do form tirava o ultimo registo e guardava .. entao ia para o 1 qnd queria o primeiro e ia para o last qnd queria o ultimo! o last funciona bem, logicamente! os restantes é q nao!

Share this post


Link to post
Share on other sites
Caça

Em vez de ir pelo ID tens de ir pela posição do registo


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

É mais facil carregares os registos para um Datatable ou outra coisa e depois só mudas a posição, ou seja

Na tabela existem 3 registos

1

2

5

DataTable também existem 3 registos mas

Posição 0 = 1

Posição 1 = 2

Posição 2 = 5

Estas a ver??

Se tiveres duvidas abre um novo tópico


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Rechousa

Coloca o seed da tabela a 0, ou seja, o próximo registo vai ser criado com o ID = 1

DBCC CHECKIDENT(NomeDaTabela, 'RESEED', 0)

Existe um comando que reinicia mas não sei qual é

Espero ter ajudado,

Pedro Martins


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Rechousa

estava a controlar pelo codigo... por exemplo codigo actual +1 ou -1 para saltar para proximos e anteriores! e no incio do form tirava o ultimo registo e guardava .. entao ia para o 1 qnd queria o primeiro e ia para o last qnd queria o ultimo! o last funciona bem, logicamente! os restantes é q nao!

Podes sempre calcular o mínimo para o próximo e máximo por anterior.

Imagina este cenário:

Na tabela existem os registos 1, 9, 16, 27, 40 e 46 e estás a visualizar o registo 27.

Ao navegares para o registo anterior executas:

SELECT MAX(id) FROM tabela WHERE id < 27
// Resultado: 16

Ao navegares para o registo seguinte executas:

SELECT MIN(id) FROM tabela WHERE id > 27
// Resultado: 40

Espero ter ajudado


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
dipacheco

mas nao funciona!

command = New SqlCommand("SELECT Min(Codigo) FROM Clientes WHERE Codigo > '" & TextBox1.Text & "'", connect)
        reader = command.ExecuteReader()
        While reader.Read
            lastcode = reader(0)
        End While

isto era para fazer a seleçao do proximo codigo... e nao funciona. dá um erro ..

Share this post


Link to post
Share on other sites
jpaulino

mas nao funciona!

E é bom que nem funcione dessa forma ... não faz sentido nenhum aquilo que queres fazer. Não tentem inventar a roda, os campos têm número automáticos por algum motivo.

Faz como se deve fazer, e já várias pessoas te sugeriram isso, e não como achas que deve ser ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.