none
Autonumeração Access errada C# RRS feed

  • Pergunta

  • Estou com um problema no meu BD...Eu Salvo, edito e excluo registros do Bd (access) sem problema..só que a autonumeração do access fica errada..Tipo, se eu tenho 7 itens e excluo um..quando eu vou criar outro, a ID aparece "8" e nao "7"...tem como reparar isso pelo proprio access, mas e por código .. tem como arrumar a autonumeração?

    valeeuu


    Thiago Rodrigo

    domingo, 12 de maio de 2013 19:03

Respostas

  • Opaaa...Então cara, segui seu conselho e até diminui o codigo aki rs..usei o comando SELECT MAX..

    segue o codigo para outras pessoas que precisarem

     OleDbCommand command = new OleDbCommand("SELECT MAX(Cod) as Cod FROM Estoque", conexao);
            conexao.Open();
            OleDbDataReader reader = command.ExecuteReader();
                  
            while (reader.Read())
            {
                Console.WriteLine(reader.GetString("Cod");
                   }
            


    Thiago Rodrigo

    • Marcado como Resposta Thiago Rodrigo segunda-feira, 13 de maio de 2013 23:42
    segunda-feira, 13 de maio de 2013 23:42

Todas as Respostas

  • Thiago, 

    Faz um SELECT para pegar o último ID e depois incrementa, não conheço utilizando access outra forma de fazer o que você quer, no SQL já é outra conversa.

    Quando o pessoal trabalhava com ADO e access que precisava ler um RecordSet era dessa forma que era feito, fazia um SELECT pegando o último ID depois era incrementado mais um e então esse número que seria o ID a ser inserido no registro.

    Abraços, 

    Leandro Rodrigues


    Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida

    segunda-feira, 13 de maio de 2013 00:46
  • Opaaa...Então cara, segui seu conselho e até diminui o codigo aki rs..usei o comando SELECT MAX..

    segue o codigo para outras pessoas que precisarem

     OleDbCommand command = new OleDbCommand("SELECT MAX(Cod) as Cod FROM Estoque", conexao);
            conexao.Open();
            OleDbDataReader reader = command.ExecuteReader();
                  
            while (reader.Read())
            {
                Console.WriteLine(reader.GetString("Cod");
                   }
            


    Thiago Rodrigo

    • Marcado como Resposta Thiago Rodrigo segunda-feira, 13 de maio de 2013 23:42
    segunda-feira, 13 de maio de 2013 23:42
  • Só uma dica. Não estava nada errado com o fato da autonumeração. A autonumeração é uma "trigger" interna que dispara um valor baseado no que ele possui no banco, é quase um max + 1. Porem ao deletarmos uma tupla, ele não atualiza, até porque isso seria um transtorno enorme. E se houver foreign key, por exemplo? Com o select max também não vai resolver muito. Pois se voce deletar do penúltimo para trás, acho que não irá se reordenar também. A única vantagem do max é quando se altera sempre o último registro. Eu continuo preferindo a Autonumeração, pois o próprio banco faz lá seus cálculos, dispara valores, mas tudo ele faz. E pensar em ter números sequenciais certinhos, sem espaço entre eles, sei lá, acho que isso não afetaria nada num BD e até pq é somente uma PK, apenas controle do BD. Bem, não digo que está errado o Max, apenas eu usaria a própria autonumeração.
    terça-feira, 14 de maio de 2013 11:00