Jump to content

Recommended Posts

Posted

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

Posted

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"

Posted (edited)

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
Posted

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"

Posted

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 ! 👍

Já está resolvido , obrigado Sérgio 😉 .

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.