Ir para o conteúdo
Leonardo Pereira

[Resolvido] Dados introduzidos na posição errada

Mensagens Recomendadas

Leonardo Pereira

Boas,

O problema é o seguinte,

eu tenho numa tabela 4 registos e introduzo por código mais de 100 registos...

O primeiro destes registos entra como ID 5 e assim sucessivamente...

Mas quando chega a um número o registo é guardado na primeira posição.

A minha tabela.

ID Nome Etc

1 A

2 ...

3

4

Como devia aparecer depois dos dados inseridos...

ID Nome

1 A

2 ...

3

4

5

6

...

Como aparece....

ID Nome

40

41

42

43

44

....

1

2

3

4

5

...

Agradeço a vossa ajuda, cumps

Leonardo Pereira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

E a relação com VB.NET é?

Indica qual a SGBD que estás a usar.

Entretanto, posso já adiantar-te que é muito provável que isso esteja a acontecer porque o teu campo ID é alfanumérico e não numérico.

Dá mais detalhe relativamente ao tipo de dados do campo e de como é que o ID está a ser gerado.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

E a relação com VB.NET é?

Indica qual a SGBD que estás a usar.

Entretanto, posso já adiantar-te que é muito provável que isso esteja a acontecer porque o teu campo ID é alfanumérico e não numérico.

Dá mais detalhe relativamente ao tipo de dados do campo e de como é que o ID está a ser gerado.

Bom dia Sérgio,

Estou a utilizar o Visual Studio 2012 Express

A base de dados é access (accdb)

O tipo de dados que coloquei na base de dados access foi Inteiro longo, no visul basic fica do tipo integer (OleDbType.Integer)

Só não pus o campo como numeração automática e estou a gerar por código cada vez que introduzo.

Neste caso fiz assim:

Dim j = 1
For i As Integer = 0 To ...
Dim Cont As Integer = TbEmpresaBindingSource.Count + j

Comando.Parameters.Add("@ID", OleDbType.Integer, 10).Value = Cont
....
...
j += 1
Next

Cumps, Leonardo

Editado por ribeiro55

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Contagem de registos para controlar um ID é, no mínimo, má ideia.

Imagina que adiciono 10 registos. O próximo ID aqui seria o 11.

Por alguma razão, apago os 5 primeiros com ID 1,2,3,4 e 5. Fico com os ID 6,7,8,9 e 10.

Com o teu método de construír ID, o próximo ID seria o 6, porque só tinha 5 registos.

Vai-se gerar um conflito entre os novos 6,7,8,9 e 10 e os que já lá estavam.

Deverias apanhar o máximo desse campo e não a contagem.

Quanto ao resto, se usas um tipo de dados numérico, só precisas de terminar o teu comando select com um ORDER BY ID.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

Nunca tinha pensado nisso, tens toda a razão !

Isto é sempre relevante porque podemos ter mil registos e se apagarmos todos excepto o 1 e o 1000 os novos já vêm 1001 mas é sem dúvida a melhor maneira para não criar conflitos ! :thumbsup:

Já está resolvido , obrigado Sérgio ;) .

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.