Ir para o conteúdo
FasterProgm

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

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por ribeiro55

Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.