Jump to content
FasterProgm

[Dúvida] Numeração automática

Recommended Posts

FasterProgm

Bom dia pessoas!

Estou num projecto portanto vão-me surgindo dúvidas e eu vou tentando descobrir e postando aqui para ver se já alguém sabe facilitando-me o trabalho.

Bem hoje, a minha dúvida é:

tenho um campo ID que é numeração automatica

Nele ja tinha inserido 6 registos mas apaguei todos.

Depois vou inserir um registo novo na mesma tabela e o ID torna-se 7 e eu nao queria que ela fizesse isso, que se torna-se 1 outra vez. Neste caso toda a vez que uma linha for apagada, conseguir meter no lugar dessa linha apagada um novo registo.

Quem me poder ajudar agradeço imenso.

Cumprimentos

P.S - Estou a utilizar PostgreSQL 9.x e Visual Studio 2010 (VB)


“Algo só é impossível até que alguém duvide e resolva provar ao contrário.” Albert Einstein

Share this post


Link to post
Share on other sites
acao

boas

espero não estar a dizer baboseira mas

penso que em todas as basededados é assim, para contornar a situação em vez de eliminar o registo faça update. que nem sempre dará certo.

ou então

colocar chave primaria num campo que não tenha dados repetidos.(muito usada)

ou ainda

adicionar um campo numerico para servir de id com chave primaria, numero adicionado via codigo, que depois seria possivel voltar adicionar o numero deletado, mas penso que nada funcional.

cumps

acao

Edited by acao

Share this post


Link to post
Share on other sites
Nelson Sousa

Olá,

Eu nunca usei o postgreSQL mas com certeza term como reiniciar a numeração automática.

No Access basta você compactar/reparar o BD após deletar os dados da tabela.

No MySQL você usa o comando/cláusula TRUNCATE SuaTabela


Um Abraço,

Nelson Sousa

Share this post


Link to post
Share on other sites
FasterProgm

boas

espero não estar a dizer baboseira mas

penso que em todas as basededados é assim, para contornar a situação em vez de eliminar o registo faça update. que nem sempre dará certo.

ou então

colocar chave primaria num campo que não tenha dados repetidos.(muito usada)

ou ainda

adicionar um campo numerico para servir de id com chave primaria, numero adicionado via codigo, que depois seria possivel voltar adicionar o numero deletado, mas penso que nada funcional.

cumps

acao

Olá,

Eu nunca usei o postgreSQL mas com certeza term como reiniciar a numeração automática.

No Access basta você compactar/reparar o BD após deletar os dados da tabela.

No MySQL você usa o comando/cláusula TRUNCATE SuaTabela

olá,

desde já obrigado pela ajuda, mas não era bem isso que tinha em mente,

o meu objectivo era que caso algum registo fosse apagado, o proximo registo ficasse com o número desse de modo a não haver "buracos" nos id's.

Não se se isso é possivel mas gostava de ter ajuda nisso

Obrigado pelo tempo gasto, pela atenção e esforço,

Cumprimentos


“Algo só é impossível até que alguém duvide e resolva provar ao contrário.” Albert Einstein

Share this post


Link to post
Share on other sites
Richasantos

Hum eu sou iniciante e estou a aprender sozinho VB.Net... mas parece-me que podias fazer isso, ao percorrer todos os ids do seguinte modo:

If "subtracao de dois ids consecutivos" = 1 then

Elseif "subtracao de dois ids consecutivos" = 2 then...

Não sei se me estou a fazer entender...

Share this post


Link to post
Share on other sites
acao

Olá,

No Access basta você compactar/reparar o BD após deletar os dados da tabela.

boas

isto apenas funciona se não existirem registo.ou seja para começar de inicio

e foi pedido isto.

Neste caso toda a vez que uma linha for apagada, conseguir meter no lugar dessa linha apagada um novo registo.

cumps

acao

Edited by acao

Share this post


Link to post
Share on other sites
Nelson Sousa

Ah certo,

Nesse caso a numeração automática não funciona, eu pelo menos nunca vi.

O que se pode fazer é utilizar-se de um campo numérico(Inteiro Longo) na tabela, e, toda vez que se for inserir um novo registro, antes da inserção, você pega o último número cadastrado e soma +1.

Talvez essa função te ajude:

   Public Function RetornarIdNumerico(ByVal strQuery As String) As Integer
       Dim cn As New OleDbConnection()
       Try
           'Abrir o banco de dados e passar os
           'parametros da consulta SQL, parametros
           'e ordem de execução e retorna um inteiro.
           cn = AbrirBanco() 'A sub AbrirAbanco desta linha a conexão com o BD
           Dim cmdCommand As New OleDbCommand
           With cmdCommand
               .CommandText = strQuery.ToString
               .CommandType = CommandType.Text
               .Connection = cn
           End With
           Dim dtReader As OleDbDataReader
           dtReader = cmdCommand.ExecuteReader()
           Dim codigo As Integer
           If dtReader.Read() Then
               codigo = dtReader(0)
           End If
           Return codigo
       Catch ex As Exception
           Throw ex
       Finally
           FecharBanco(cn)
       End Try
   End Function

Edited by ribeiro55

Um Abraço,

Nelson Sousa

Share this post


Link to post
Share on other sites
FasterProgm

Obrigado pela ajuda pessoal, serviu ;)

Cumprimentos


“Algo só é impossível até que alguém duvide e resolva provar ao contrário.” Albert Einstein

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.