Leonardo Pereira Posted April 4, 2013 at 05:04 PM Report #501665 Posted April 4, 2013 at 05:04 PM 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
ribeiro55 Posted April 4, 2013 at 05:42 PM Report #501682 Posted April 4, 2013 at 05:42 PM 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"
Leonardo Pereira Posted April 5, 2013 at 08:44 AM Author Report #501742 Posted April 5, 2013 at 08:44 AM (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 April 5, 2013 at 10:07 AM by ribeiro55
ribeiro55 Posted April 5, 2013 at 10:13 AM Report #501771 Posted April 5, 2013 at 10:13 AM 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"
Leonardo Pereira Posted April 5, 2013 at 10:41 AM Author Report #501778 Posted April 5, 2013 at 10:41 AM 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 😉 .
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