Jump to content
Leonardo Pereira

[Resolvido] Dados introduzidos na posição errada

Recommended Posts

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

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Edited by ribeiro55

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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 ;) .

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.