FasterProgm Posted March 26, 2013 at 11:04 AM Report #500432 Posted March 26, 2013 at 11:04 AM 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)
acao Posted March 27, 2013 at 11:19 PM Report #500629 Posted March 27, 2013 at 11:19 PM (edited) 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 March 27, 2013 at 11:21 PM by acao
Nelson Sousa Posted March 28, 2013 at 12:01 AM Report #500637 Posted March 28, 2013 at 12:01 AM 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
FasterProgm Posted March 28, 2013 at 02:43 PM Author Report #500693 Posted March 28, 2013 at 02:43 PM 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
Richasantos Posted March 28, 2013 at 06:41 PM Report #500721 Posted March 28, 2013 at 06:41 PM 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...
acao Posted March 28, 2013 at 07:16 PM Report #500730 Posted March 28, 2013 at 07:16 PM (edited) 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 March 28, 2013 at 07:23 PM by acao
Nelson Sousa Posted March 29, 2013 at 11:39 AM Report #500788 Posted March 29, 2013 at 11:39 AM (edited) 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 April 5, 2013 at 11:52 AM by ribeiro55 Um Abraço, Nelson Sousa
FasterProgm Posted April 4, 2013 at 02:37 PM Author Report #501623 Posted April 4, 2013 at 02:37 PM Obrigado pela ajuda pessoal, serviu 😉 Cumprimentos
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now