Ir para o conteúdo
jleites

[duvida] VB + BD escrever no registo mais "acessível"

Mensagens Recomendadas

jleites

boas

estou a desenvolver um projeto em visual basic com ligação a uma base de dados de access e o problema é que quando apago um registo um novo que va criar nao ocupa o "id" daquele

por exemplo:

crio os seguintes registos(id nome idade):

1 ze 22

2 manuel 35

3 joaquim 21

4 rui 19

5 pedro 35

apago um deles(fica assim):

1 ze 22

3 joaquim 21

4 rui 19

5 pedro 35

ao adicionar um novo fica assim:

1 ze 22

3 joaquim 21

4 rui 19

5 pedro 35

6 luis 27

e eu queria que ele tomasse o id mais "pequeno", ou seja que ficasse assim:

1 ze 22

2 luis 27

3 joaquim 21

4 rui 19

5 pedro 35

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch

Olá,

A maneira correcta de fazer é assim mesmo, imagine que tens as tabelas relacionadas, e que foi feita uma venda para o cliente com o ID 2, depois vc remove o ID 2 e adiciona um novo cliente com ID 2, tá a ver o problema que irá dar...

Porém se quiseres fazer mesmo como disseste, o ID (chave primaria) não pode ser auto-increment, em access acho que é autonumber, tem que ser long.

Depois quanto inseres um novo registo, tens que fazer um ciclo para saber qual o primeiro numero disponível de uma sequência. Penso não existir nada "automático" que faça isso, tens de passar todos os ID's para um array.

code em VB6:

Option Explicit

Dim MyArr() As Variant

Private Sub Command1_Click()
   Dim i As Integer, iUltimoDaSeq As Integer, iInserir As Integer

   'Ver Qual Numero a Inserir
   iInserir = 1
   If (Not MyArr) = -1 Then
    Debug.Print "O Array não foi inicializado"
   Else
    For i = LBound(MyArr) To UBound(MyArr)
	    iUltimoDaSeq = iUltimoDaSeq + 1
	    If MyArr(i) = iUltimoDaSeq Then iInserir = MyArr(i) + 1 Else Exit For
    Next    'i
   End If
   MsgBox "Numero a inserir: " & iInserir

   'Adicionar novo numero ao Array
   Dim iTamanhoArray As Integer, iCont As Integer, i2 As Integer
   If (Not MyArr) = -1 Then iTamanhoArray = 0 Else iTamanhoArray = UBound(MyArr) + 1
   ReDim Preserve MyArr(iTamanhoArray) As Variant
   MyArr(iTamanhoArray) = iInserir
   For i = LBound(MyArr) To UBound(MyArr) - 1
    iCont = iCont + 1
    If iCont = iInserir Then
	    For i2 = UBound(MyArr) To i + 1 Step -1
		    MyArr(i2) = MyArr(i2 - 1)
	    Next    'i
	    MyArr(i) = iInserir
	    Exit For
    End If
   Next    'i

   'Listar conteudo do Array
   Debug.Print ".:Conteudo do Array:."
   For i = LBound(MyArr) To UBound(MyArr)
    Debug.Print "Index: " & i & "  Valor: " & MyArr(i)
    'MsgBox "Index: " & i & "  Valor: " & MyArr(i)
   Next    'i

End Sub

Private Sub Form_Load()
   Dim i As Integer

   MyArr = Array(1, 3, 4, 5)

   For i = LBound(MyArr) To UBound(MyArr)
    MsgBox "Index: " & i & "  Valor: " & MyArr(i)
   Next    'i
End Sub

A parte de Adicionar novo numero ao Array, não é necessária, foi só para completar este exemplo, apenas o que te interessa é saber Qual Numero a Inserir, não te esqueças que tens que passar todos os ID's para um array antes de fazeres isto.

Espero ter ajudado,

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.